1 |
commit: 151098f5e61eb11739c9910bc9dcff497fbbb78d |
2 |
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Dec 14 23:26:52 2019 +0000 |
4 |
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Dec 14 23:47:22 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=151098f5 |
7 |
|
8 |
dev-haskell/edisoncore: bump up to 1.3.2.1-r1 |
9 |
|
10 |
Package-Manager: Portage-2.3.81, Repoman-2.3.20 |
11 |
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org> |
12 |
|
13 |
dev-haskell/edisoncore/Manifest | 1 + |
14 |
.../edisoncore/edisoncore-1.3.2.1-r1.ebuild | 35 + |
15 |
.../files/edisoncore-1.3.2.1-ghc-8.8.patch | 1268 ++++++++++++++++++++ |
16 |
3 files changed, 1304 insertions(+) |
17 |
|
18 |
diff --git a/dev-haskell/edisoncore/Manifest b/dev-haskell/edisoncore/Manifest |
19 |
index 61b05c46083..fb21ededf4d 100644 |
20 |
--- a/dev-haskell/edisoncore/Manifest |
21 |
+++ b/dev-haskell/edisoncore/Manifest |
22 |
@@ -1 +1,2 @@ |
23 |
DIST EdisonCore-1.3.1.1.tar.gz 80699 BLAKE2B e92848bb282d478c84817e0c0c2515b0fcb227b8224b020e8e50df4deb53915ccb7aa172a86eef787aa985efaaffbb42deab0fbb5b8669adf9635129b017fee8 SHA512 2e290a5c792a136931387936f457a45913edeedb9eda8006649b974d9aea294b9f1b7e5b2aa020c3ed151934cef8b2bd228e2cb56f7db37f35d59dcb23f7bcb8 |
24 |
+DIST EdisonCore-1.3.2.1.tar.gz 82522 BLAKE2B 758e02e462d4f86b95a66792ce26dda6d1a00506a8071f3716f9a7484fc992af9e1709a9bbb958ee71175b2c51c4574493a35b6eaa7a1bfab415ed4ce7e2a8b4 SHA512 6812b04edb1abdfc2486d66bb86d6370b76667de1603ab421d92a6ecc17a25014e0ab97f53dd4f1e75cacf32c31611e8f2dd6c740c840e349c3c762ae00df65f |
25 |
|
26 |
diff --git a/dev-haskell/edisoncore/edisoncore-1.3.2.1-r1.ebuild b/dev-haskell/edisoncore/edisoncore-1.3.2.1-r1.ebuild |
27 |
new file mode 100644 |
28 |
index 00000000000..87a59c476f7 |
29 |
--- /dev/null |
30 |
+++ b/dev-haskell/edisoncore/edisoncore-1.3.2.1-r1.ebuild |
31 |
@@ -0,0 +1,35 @@ |
32 |
+# Copyright 1999-2019 Gentoo Authors |
33 |
+# Distributed under the terms of the GNU General Public License v2 |
34 |
+ |
35 |
+EAPI=7 |
36 |
+ |
37 |
+# ebuild generated by hackport 0.5.5.9999 |
38 |
+ |
39 |
+CABAL_FEATURES="lib profile haddock hoogle hscolour" |
40 |
+inherit haskell-cabal |
41 |
+ |
42 |
+MY_PN="EdisonCore" |
43 |
+MY_P="${MY_PN}-${PV}" |
44 |
+ |
45 |
+DESCRIPTION="A library of efficent, purely-functional data structures (Core Implementations)" |
46 |
+HOMEPAGE="http://rwd.rdockins.name/edison/home/" |
47 |
+SRC_URI="https://hackage.haskell.org/package/${MY_P}/${MY_P}.tar.gz" |
48 |
+ |
49 |
+LICENSE="MIT" |
50 |
+SLOT="0/${PV}" |
51 |
+KEYWORDS="~amd64 ~x86" |
52 |
+IUSE="" |
53 |
+ |
54 |
+RDEPEND=">=dev-haskell/edisonapi-1.3:=[profile?] <dev-haskell/edisonapi-1.4:=[profile?] |
55 |
+ dev-haskell/mtl:=[profile?] |
56 |
+ >=dev-haskell/quickcheck-2.8.2:2=[profile?] <dev-haskell/quickcheck-3:2=[profile?] |
57 |
+ >=dev-haskell/semigroups-0.18:=[profile?] <dev-haskell/semigroups-0.19:=[profile?] |
58 |
+ >=dev-lang/ghc-7.4.1:= |
59 |
+" |
60 |
+DEPEND="${RDEPEND} |
61 |
+ >=dev-haskell/cabal-1.10 |
62 |
+" |
63 |
+ |
64 |
+S="${WORKDIR}/${MY_P}" |
65 |
+ |
66 |
+PATCHES=( "${FILESDIR}/${PN}-1.3.2.1-ghc-8.8.patch" ) |
67 |
|
68 |
diff --git a/dev-haskell/edisoncore/files/edisoncore-1.3.2.1-ghc-8.8.patch b/dev-haskell/edisoncore/files/edisoncore-1.3.2.1-ghc-8.8.patch |
69 |
new file mode 100644 |
70 |
index 00000000000..5589433edc6 |
71 |
--- /dev/null |
72 |
+++ b/dev-haskell/edisoncore/files/edisoncore-1.3.2.1-ghc-8.8.patch |
73 |
@@ -0,0 +1,1268 @@ |
74 |
+diff --git a/EdisonCore.cabal b/EdisonCore.cabal |
75 |
+index 901cd83..ad1af00 100644 |
76 |
+--- a/EdisonCore.cabal |
77 |
++++ b/EdisonCore.cabal |
78 |
+@@ -62,8 +62,10 @@ Library |
79 |
+ array |
80 |
+ |
81 |
+ if impl(ghc < 8.0) |
82 |
+- -- Provide/emulate Data.Semigroups` API for pre-GHC-8 |
83 |
+- Build-Depends: semigroups == 0.18.* |
84 |
++ Build-Depends: |
85 |
++ fail, |
86 |
++ -- Provide/emulate Data.Semigroups` API for pre-GHC-8 |
87 |
++ semigroups == 0.18.* |
88 |
+ |
89 |
+ Default-Language: Haskell2010 |
90 |
+ Default-Extensions: |
91 |
+diff --git a/src/Data/Edison/Assoc/AssocList.hs b/src/Data/Edison/Assoc/AssocList.hs |
92 |
+index c577492..15d9884 100644 |
93 |
+--- a/src/Data/Edison/Assoc/AssocList.hs |
94 |
++++ b/src/Data/Edison/Assoc/AssocList.hs |
95 |
+@@ -58,8 +58,9 @@ import Prelude hiding (null,map,lookup,foldr,foldl,foldr1,foldl1,filter) |
96 |
+ import qualified Prelude |
97 |
+ import Data.Monoid |
98 |
+ import Data.Semigroup as SG |
99 |
+-import Control.Monad.Identity |
100 |
++import qualified Control.Monad.Fail as Fail |
101 |
+ import qualified Data.Edison.Assoc as A |
102 |
++import Data.Edison.Prelude ( runFail_ ) |
103 |
+ import qualified Data.Edison.Seq as S |
104 |
+ import qualified Data.Edison.Seq.BinaryRandList as RL |
105 |
+ import Data.Edison.Assoc.Defaults |
106 |
+@@ -82,10 +83,10 @@ size :: Eq k => FM k a -> Int |
107 |
+ member :: Eq k => k -> FM k a -> Bool |
108 |
+ count :: Eq k => k -> FM k a -> Int |
109 |
+ lookup :: Eq k => k -> FM k a -> a |
110 |
+-lookupM :: (Eq k, Monad rm) => k -> FM k a -> rm a |
111 |
++lookupM :: (Eq k, Fail.MonadFail rm) => k -> FM k a -> rm a |
112 |
+ lookupAll :: (Eq k,S.Sequence seq) => k -> FM k a -> seq a |
113 |
+ lookupAndDelete :: Eq k => k -> FM k a -> (a,FM k a) |
114 |
+-lookupAndDeleteM :: (Eq k,Monad rm) => k -> FM k a -> rm (a,FM k a) |
115 |
++lookupAndDeleteM :: (Eq k, Fail.MonadFail rm) => k -> FM k a -> rm (a,FM k a) |
116 |
+ lookupAndDeleteAll :: (Eq k,S.Sequence seq) => k -> FM k a -> (seq a,FM k a) |
117 |
+ lookupWithDefault :: Eq k => a -> k -> FM k a -> a |
118 |
+ adjust :: Eq k => (a -> a) -> k -> FM k a -> FM k a |
119 |
+@@ -143,11 +144,11 @@ unionSeqWithKey :: (Eq k,S.Sequence seq) => |
120 |
+ (k -> a -> a -> a) -> seq (FM k a) -> FM k a |
121 |
+ intersectionWithKey :: Eq k => (k -> a -> b -> c) -> FM k a -> FM k b -> FM k c |
122 |
+ |
123 |
+-minView :: (Ord k,Monad m) => FM k a -> m (a,FM k a) |
124 |
++minView :: (Ord k, Fail.MonadFail m) => FM k a -> m (a,FM k a) |
125 |
+ minElem :: Ord k => FM k a -> a |
126 |
+ deleteMin :: Ord k => FM k a -> FM k a |
127 |
+ unsafeInsertMin :: Ord k => k -> a -> FM k a -> FM k a |
128 |
+-maxView :: (Ord k,Monad m) => FM k a -> m (a,FM k a) |
129 |
++maxView :: (Ord k, Fail.MonadFail m) => FM k a -> m (a,FM k a) |
130 |
+ maxElem :: Ord k => FM k a -> a |
131 |
+ deleteMax :: Ord k => FM k a -> FM k a |
132 |
+ unsafeInsertMax :: Ord k => k -> a -> FM k a -> FM k a |
133 |
+@@ -169,9 +170,9 @@ partitionLT_GE :: Ord k => k -> FM k a -> (FM k a,FM k a) |
134 |
+ partitionLE_GT :: Ord k => k -> FM k a -> (FM k a,FM k a) |
135 |
+ partitionLT_GT :: Ord k => k -> FM k a -> (FM k a,FM k a) |
136 |
+ |
137 |
+-minViewWithKey :: (Ord k,Monad m) => FM k a -> m ((k, a), FM k a) |
138 |
++minViewWithKey :: (Ord k, Fail.MonadFail m) => FM k a -> m ((k, a), FM k a) |
139 |
+ minElemWithKey :: Ord k => FM k a -> (k,a) |
140 |
+-maxViewWithKey :: (Ord k,Monad m) => FM k a -> m ((k, a), FM k a) |
141 |
++maxViewWithKey :: (Ord k, Fail.MonadFail m) => FM k a -> m ((k, a), FM k a) |
142 |
+ maxElemWithKey :: Ord k => FM k a -> (k,a) |
143 |
+ foldrWithKey :: Ord k => (k -> a -> b -> b) -> b -> FM k a -> b |
144 |
+ foldlWithKey :: Ord k => (b -> k -> a -> b) -> b -> FM k a -> b |
145 |
+@@ -309,7 +310,7 @@ count _ E = 0 |
146 |
+ count key (I k _ m) | key == k = 1 |
147 |
+ | otherwise = count key m |
148 |
+ |
149 |
+-lookup key m = runIdentity (lookupM key m) |
150 |
++lookup key m = runFail_ (lookupM key m) |
151 |
+ |
152 |
+ lookupM _ E = fail "AssocList.lookup: lookup failed" |
153 |
+ lookupM key (I k x m) | key == k = return x |
154 |
+@@ -319,7 +320,7 @@ lookupAll _ E = S.empty |
155 |
+ lookupAll key (I k x m) | key == k = S.singleton x |
156 |
+ | otherwise = lookupAll key m |
157 |
+ |
158 |
+-lookupAndDelete key m = runIdentity (lookupAndDeleteM key m) |
159 |
++lookupAndDelete key m = runFail_ (lookupAndDeleteM key m) |
160 |
+ |
161 |
+ lookupAndDeleteM _ E = fail "AssocList.lookupAndDeleteM: lookup failed" |
162 |
+ lookupAndDeleteM key (I k x m) |
163 |
+diff --git a/src/Data/Edison/Assoc/Defaults.hs b/src/Data/Edison/Assoc/Defaults.hs |
164 |
+index a9ef520..8e2b37d 100644 |
165 |
+--- a/src/Data/Edison/Assoc/Defaults.hs |
166 |
++++ b/src/Data/Edison/Assoc/Defaults.hs |
167 |
+@@ -15,6 +15,8 @@ module Data.Edison.Assoc.Defaults where |
168 |
+ |
169 |
+ import Prelude hiding (null,map,lookup,foldr,foldl,foldr1,foldl1,filter) |
170 |
+ |
171 |
++import qualified Control.Monad.Fail as Fail |
172 |
++ |
173 |
+ import Data.Edison.Assoc |
174 |
+ import qualified Data.Edison.Seq as S |
175 |
+ import qualified Data.Edison.Seq.ListSeq as L |
176 |
+@@ -190,7 +192,7 @@ lookupAndDeleteDefault k m = |
177 |
+ Nothing -> error (instanceName m ++ ".lookupAndDelete: lookup failed") |
178 |
+ Just x -> (x, delete k m) |
179 |
+ |
180 |
+-lookupAndDeleteMDefault :: (Monad rm, AssocX m k) => k -> m a -> rm (a, m a) |
181 |
++lookupAndDeleteMDefault :: (Fail.MonadFail rm, AssocX m k) => k -> m a -> rm (a, m a) |
182 |
+ lookupAndDeleteMDefault k m = |
183 |
+ case lookupM k m of |
184 |
+ Nothing -> fail (instanceName m ++ ".lookupAndDelete: lookup failed") |
185 |
+diff --git a/src/Data/Edison/Assoc/PatriciaLoMap.hs b/src/Data/Edison/Assoc/PatriciaLoMap.hs |
186 |
+index 3073f83..43c2d85 100644 |
187 |
+--- a/src/Data/Edison/Assoc/PatriciaLoMap.hs |
188 |
++++ b/src/Data/Edison/Assoc/PatriciaLoMap.hs |
189 |
+@@ -55,10 +55,11 @@ module Data.Edison.Assoc.PatriciaLoMap ( |
190 |
+ |
191 |
+ import Prelude hiding (null,map,lookup,foldr,foldl,foldr1,foldl1,filter) |
192 |
+ import qualified Prelude |
193 |
+-import Control.Monad.Identity (runIdentity) |
194 |
++import qualified Control.Monad.Fail as Fail |
195 |
+ import Data.Monoid |
196 |
+ import Data.Semigroup as SG |
197 |
+ import qualified Data.Edison.Assoc as A |
198 |
++import Data.Edison.Prelude ( runFail_ ) |
199 |
+ import qualified Data.Edison.Seq as S |
200 |
+ import qualified Data.Edison.Seq.ListSeq as L |
201 |
+ import Data.Edison.Assoc.Defaults |
202 |
+@@ -210,9 +211,9 @@ member k (L j _) = (j == k) |
203 |
+ member k (B _ m t0 t1) = if zeroBit k m then member k t0 else member k t1 |
204 |
+ |
205 |
+ lookup :: Int -> FM a -> a |
206 |
+-lookup k m = runIdentity (lookupM k m) |
207 |
++lookup k m = runFail_ (lookupM k m) |
208 |
+ |
209 |
+-lookupM :: (Monad rm) => Int -> FM a -> rm a |
210 |
++lookupM :: (Fail.MonadFail rm) => Int -> FM a -> rm a |
211 |
+ lookupM _ E = fail "PatriciaLoMap.lookup: lookup failed" |
212 |
+ lookupM k (L j x) |
213 |
+ | j == k = return x |
214 |
+@@ -233,7 +234,7 @@ lookupAndDelete = doLookupAndDelete |
215 |
+ (error "PatriciaLoMap.lookupAndDelete: lookup failed") |
216 |
+ (,) |
217 |
+ |
218 |
+-lookupAndDeleteM :: Monad m => Int -> FM a -> m (a, FM a) |
219 |
++lookupAndDeleteM :: Fail.MonadFail m => Int -> FM a -> m (a, FM a) |
220 |
+ lookupAndDeleteM = doLookupAndDelete |
221 |
+ (fail "PatriciaLoMap.lookupAndDelete: lookup failed") |
222 |
+ (\x m -> return (x,m)) |
223 |
+@@ -583,25 +584,25 @@ ordListFM_rev (B _ _ t0 t1) = merge (ordListFM_rev t0) (ordListFM_rev t1) |
224 |
+ GT -> x : merge xs (y:ys) |
225 |
+ EQ -> error "PatriciaLoMap: bug in ordListFM_rev" |
226 |
+ |
227 |
+-minView :: Monad m => FM a -> m (a, FM a) |
228 |
++minView :: Fail.MonadFail m => FM a -> m (a, FM a) |
229 |
+ minView fm = |
230 |
+ case ordListFM fm of |
231 |
+ [] -> fail $ moduleName++".minView: empty map" |
232 |
+ ((k,x):_) -> return (x,delete k fm) |
233 |
+ |
234 |
+-minViewWithKey :: Monad m => FM a -> m ((Int, a), FM a) |
235 |
++minViewWithKey :: Fail.MonadFail m => FM a -> m ((Int, a), FM a) |
236 |
+ minViewWithKey fm = |
237 |
+ case ordListFM fm of |
238 |
+ [] -> fail $ moduleName++".minViewWithKey: empty map" |
239 |
+ ((k,x):_) -> return ((k,x),delete k fm) |
240 |
+ |
241 |
+-maxView :: Monad m => FM a -> m (a, FM a) |
242 |
++maxView :: Fail.MonadFail m => FM a -> m (a, FM a) |
243 |
+ maxView fm = |
244 |
+ case ordListFM_rev fm of |
245 |
+ [] -> fail $ moduleName++".maxView: empty map" |
246 |
+ ((k,x):_) -> return (x,delete k fm) |
247 |
+ |
248 |
+-maxViewWithKey :: Monad m => FM a -> m ((Int, a), FM a) |
249 |
++maxViewWithKey :: Fail.MonadFail m => FM a -> m ((Int, a), FM a) |
250 |
+ maxViewWithKey fm = |
251 |
+ case ordListFM_rev fm of |
252 |
+ [] -> fail $ moduleName++".maxViewWithKey: empty map" |
253 |
+diff --git a/src/Data/Edison/Assoc/StandardMap.hs b/src/Data/Edison/Assoc/StandardMap.hs |
254 |
+index 5ca48c5..e7b6a0e 100644 |
255 |
+--- a/src/Data/Edison/Assoc/StandardMap.hs |
256 |
++++ b/src/Data/Edison/Assoc/StandardMap.hs |
257 |
+@@ -51,6 +51,7 @@ module Data.Edison.Assoc.StandardMap ( |
258 |
+ |
259 |
+ import Prelude hiding (null,map,lookup,foldr,foldl,foldr1,foldl1,filter) |
260 |
+ import qualified Prelude |
261 |
++import qualified Control.Monad.Fail as Fail |
262 |
+ import qualified Data.Edison.Assoc as A |
263 |
+ import qualified Data.Edison.Seq as S |
264 |
+ import qualified Data.Edison.Seq.ListSeq as L |
265 |
+@@ -81,10 +82,10 @@ member :: Ord k => k -> FM k a -> Bool |
266 |
+ count :: Ord k => k -> FM k a -> Int |
267 |
+ lookup :: Ord k => k -> FM k a -> a |
268 |
+ lookupAll :: (Ord k,S.Sequence seq) => k -> FM k a -> seq a |
269 |
+-lookupM :: (Ord k,Monad m) => k -> FM k a -> m a |
270 |
++lookupM :: (Ord k, Fail.MonadFail m) => k -> FM k a -> m a |
271 |
+ lookupWithDefault :: Ord k => a -> k -> FM k a -> a |
272 |
+ lookupAndDelete :: Ord k => k -> FM k a -> (a, FM k a) |
273 |
+-lookupAndDeleteM :: (Ord k,Monad m) => k -> FM k a -> m (a, FM k a) |
274 |
++lookupAndDeleteM :: (Ord k, Fail.MonadFail m) => k -> FM k a -> m (a, FM k a) |
275 |
+ lookupAndDeleteAll :: (Ord k,S.Sequence seq) => k -> FM k a -> (seq a,FM k a) |
276 |
+ adjust :: Ord k => (a->a) -> k -> FM k a -> FM k a |
277 |
+ adjustAll :: Ord k => (a->a) -> k -> FM k a -> FM k a |
278 |
+@@ -103,11 +104,11 @@ filter :: Ord k => (a -> Bool) -> FM k a -> FM k a |
279 |
+ partition :: Ord k => (a -> Bool) -> FM k a -> (FM k a,FM k a) |
280 |
+ elements :: (Ord k,S.Sequence seq) => FM k a -> seq a |
281 |
+ |
282 |
+-minView :: (Ord k,Monad m) => FM k a -> m (a, FM k a) |
283 |
++minView :: (Ord k, Fail.MonadFail m) => FM k a -> m (a, FM k a) |
284 |
+ minElem :: Ord k => FM k a -> a |
285 |
+ deleteMin :: Ord k => FM k a -> FM k a |
286 |
+ unsafeInsertMin :: Ord k => k -> a -> FM k a -> FM k a |
287 |
+-maxView :: (Ord k,Monad m) => FM k a -> m (a, FM k a) |
288 |
++maxView :: (Ord k, Fail.MonadFail m) => FM k a -> m (a, FM k a) |
289 |
+ maxElem :: Ord k => FM k a -> a |
290 |
+ deleteMax :: Ord k => FM k a -> FM k a |
291 |
+ unsafeInsertMax :: Ord k => k -> a -> FM k a -> FM k a |
292 |
+@@ -165,9 +166,9 @@ foldWithKey' :: Ord k => (k -> a -> b -> b) -> b -> FM k a -> b |
293 |
+ filterWithKey :: Ord k => (k -> a -> Bool) -> FM k a -> FM k a |
294 |
+ partitionWithKey :: Ord k => (k -> a -> Bool) -> FM k a -> (FM k a,FM k a) |
295 |
+ |
296 |
+-minViewWithKey :: (Ord k,Monad m) => FM k a -> m ((k, a), FM k a) |
297 |
++minViewWithKey :: (Ord k, Fail.MonadFail m) => FM k a -> m ((k, a), FM k a) |
298 |
+ minElemWithKey :: Ord k => FM k a -> (k,a) |
299 |
+-maxViewWithKey :: (Ord k,Monad m) => FM k a -> m ((k, a), FM k a) |
300 |
++maxViewWithKey :: (Ord k, Fail.MonadFail m) => FM k a -> m ((k, a), FM k a) |
301 |
+ maxElemWithKey :: Ord k => FM k a -> (k,a) |
302 |
+ foldrWithKey :: (k -> a -> b -> b) -> b -> FM k a -> b |
303 |
+ foldlWithKey :: (b -> k -> a -> b) -> b -> FM k a -> b |
304 |
+diff --git a/src/Data/Edison/Assoc/TernaryTrie.hs b/src/Data/Edison/Assoc/TernaryTrie.hs |
305 |
+index 8b2dd57..431b348 100644 |
306 |
+--- a/src/Data/Edison/Assoc/TernaryTrie.hs |
307 |
++++ b/src/Data/Edison/Assoc/TernaryTrie.hs |
308 |
+@@ -55,8 +55,10 @@ module Data.Edison.Assoc.TernaryTrie ( |
309 |
+ import Prelude hiding (null,map,lookup,foldr,foldl,foldr1,foldl1,filter) |
310 |
+ import qualified Prelude |
311 |
+ import qualified Data.Edison.Assoc as A |
312 |
++import Data.Edison.Prelude ( runFail_ ) |
313 |
+ import qualified Data.Edison.Seq as S |
314 |
+ import qualified Data.List as L |
315 |
++import qualified Control.Monad.Fail as Fail |
316 |
+ import Control.Monad.Identity |
317 |
+ import Data.Monoid |
318 |
+ import Data.Semigroup as SG |
319 |
+@@ -83,10 +85,10 @@ size :: Ord k => FM k a -> Int |
320 |
+ member :: Ord k => [k] -> FM k a -> Bool |
321 |
+ count :: Ord k => [k] -> FM k a -> Int |
322 |
+ lookup :: Ord k => [k] -> FM k a -> a |
323 |
+-lookupM :: (Ord k, Monad rm) => [k] -> FM k a -> rm a |
324 |
++lookupM :: (Ord k, Fail.MonadFail rm) => [k] -> FM k a -> rm a |
325 |
+ lookupAll :: (Ord k,S.Sequence seq) => [k] -> FM k a -> seq a |
326 |
+ lookupAndDelete :: Ord k => [k] -> FM k a -> (a, FM k a) |
327 |
+-lookupAndDeleteM :: (Ord k, Monad rm) => [k] -> FM k a -> rm (a, FM k a) |
328 |
++lookupAndDeleteM :: (Ord k, Fail.MonadFail rm) => [k] -> FM k a -> rm (a, FM k a) |
329 |
+ lookupAndDeleteAll :: (Ord k, S.Sequence seq) => [k] -> FM k a -> (seq a,FM k a) |
330 |
+ lookupWithDefault :: Ord k => a -> [k] -> FM k a -> a |
331 |
+ adjust :: Ord k => (a -> a) -> [k] -> FM k a -> FM k a |
332 |
+@@ -527,7 +529,7 @@ member = memberUsingLookupM |
333 |
+ |
334 |
+ count = countUsingMember |
335 |
+ |
336 |
+-lookup m k = runIdentity (lookupM m k) |
337 |
++lookup m k = runFail_ (lookupM m k) |
338 |
+ |
339 |
+ lookupM [] (FM Nothing _) |
340 |
+ = fail "TernaryTrie.lookup: lookup failed" |
341 |
+@@ -854,18 +856,18 @@ intersectionWithKey f |
342 |
+ |
343 |
+ -- OrdAssocX |
344 |
+ |
345 |
+-minViewFMB :: Monad m => FMB k a -> (FMB k a -> FM k a) -> m (a, FM k a) |
346 |
++minViewFMB :: Fail.MonadFail m => FMB k a -> (FMB k a -> FM k a) -> m (a, FM k a) |
347 |
+ minViewFMB E _ = fail $ moduleName++".minView: empty map" |
348 |
+ minViewFMB (I i k (Just v) E m r) f = return (v, f (I i k Nothing E m r)) |
349 |
+ minViewFMB (I _ _ Nothing E (FMB' E) _) _ = error $ moduleName++".minView: bug!" |
350 |
+ minViewFMB (I _ k Nothing E (FMB' m) r) f = minViewFMB m (\m' -> f (mkVBalancedFMB k Nothing E (FMB' m') r)) |
351 |
+ minViewFMB (I _ k mv l m r) f = minViewFMB l (\l' -> f (mkVBalancedFMB k mv l' m r)) |
352 |
+ |
353 |
+-minView :: Monad m => FM k a -> m (a,FM k a) |
354 |
++minView :: Fail.MonadFail m => FM k a -> m (a,FM k a) |
355 |
+ minView (FM (Just v) fmb) = return (v, FM Nothing fmb) |
356 |
+ minView (FM Nothing fmb) = minViewFMB fmb (FM Nothing) |
357 |
+ |
358 |
+-minViewWithKeyFMB :: Monad m => FMB k a -> ([k] -> [k]) -> (FMB k a -> FM k a) -> m (([k],a),FM k a) |
359 |
++minViewWithKeyFMB :: Fail.MonadFail m => FMB k a -> ([k] -> [k]) -> (FMB k a -> FM k a) -> m (([k],a),FM k a) |
360 |
+ minViewWithKeyFMB E _ _ = fail $ moduleName++".minView: empty map" |
361 |
+ minViewWithKeyFMB (I i k (Just v) E m r) kf f = return ((kf [k],v),f (I i k Nothing E m r)) |
362 |
+ minViewWithKeyFMB (I _ _ Nothing E (FMB' E) _) _ _ = error $ moduleName++".minViewWithKey: bug!" |
363 |
+@@ -874,7 +876,7 @@ minViewWithKeyFMB (I _ k Nothing E (FMB' m) r) kf f = minViewWithKeyFMB m (kf . |
364 |
+ minViewWithKeyFMB (I _ k mv l m r) kf f = minViewWithKeyFMB l kf |
365 |
+ (\l' -> f (mkVBalancedFMB k mv l' m r)) |
366 |
+ |
367 |
+-minViewWithKey :: Monad m => FM k a -> m (([k],a),FM k a) |
368 |
++minViewWithKey :: Fail.MonadFail m => FM k a -> m (([k],a),FM k a) |
369 |
+ minViewWithKey (FM (Just v) fmb) = return (([],v),FM Nothing fmb) |
370 |
+ minViewWithKey (FM Nothing fmb) = minViewWithKeyFMB fmb id (FM Nothing) |
371 |
+ |
372 |
+@@ -906,7 +908,7 @@ deleteMin = deleteMinUsingMinView |
373 |
+ unsafeInsertMin :: Ord k => [k] -> a -> FM k a -> FM k a |
374 |
+ unsafeInsertMin = insert |
375 |
+ |
376 |
+-maxViewFMB :: Monad m => FMB k a -> (FMB k a -> FM k a) -> m (a, FM k a) |
377 |
++maxViewFMB :: Fail.MonadFail m => FMB k a -> (FMB k a -> FM k a) -> m (a, FM k a) |
378 |
+ maxViewFMB (I _ _ (Just v) l (FMB' E) E) f = return (v, f l) |
379 |
+ --maxViewFMB (I i k (Just v) l (FMB' E) E) f = return (v, f (I i k Nothing l (FMB' E) E)) |
380 |
+ maxViewFMB (I _ _ Nothing _ (FMB' E) E) _ = error $ moduleName++".maxView: bug!" |
381 |
+@@ -914,7 +916,7 @@ maxViewFMB (I i k mv l (FMB' m) E) f = maxViewFMB m (\m' -> f (I i k mv l |
382 |
+ maxViewFMB (I _ k mv l m r) f = maxViewFMB r (\r' -> f (mkVBalancedFMB k mv l m r')) |
383 |
+ maxViewFMB E _ = error $ moduleName++".maxView: bug!" |
384 |
+ |
385 |
+-maxView :: Monad m => FM k a -> m (a, FM k a) |
386 |
++maxView :: Fail.MonadFail m => FM k a -> m (a, FM k a) |
387 |
+ maxView (FM Nothing E) = fail $ moduleName++".maxView: empty map" |
388 |
+ maxView (FM (Just v) E) = return (v,FM Nothing E) |
389 |
+ maxView (FM mv fmb) = maxViewFMB fmb (FM mv) |
390 |
+@@ -930,7 +932,7 @@ maxViewWithKeyFMB (I _ k mv l m r) kf f = maxViewWithKeyFMB r kf |
391 |
+ maxViewWithKeyFMB E _ _ = error $ moduleName++".maxViewWithKey: bug!" |
392 |
+ |
393 |
+ |
394 |
+-maxViewWithKey :: Monad m => FM k a -> m (([k],a), FM k a) |
395 |
++maxViewWithKey :: Fail.MonadFail m => FM k a -> m (([k],a), FM k a) |
396 |
+ maxViewWithKey (FM Nothing E) = fail $ moduleName++".maxViewWithKey: empty map" |
397 |
+ maxViewWithKey (FM (Just v) E) = return (([],v),FM Nothing E) |
398 |
+ maxViewWithKey (FM mv fmb) = maxViewWithKeyFMB fmb id (FM mv) |
399 |
+diff --git a/src/Data/Edison/Coll/Defaults.hs b/src/Data/Edison/Coll/Defaults.hs |
400 |
+index 213ed36..d927f38 100644 |
401 |
+--- a/src/Data/Edison/Coll/Defaults.hs |
402 |
++++ b/src/Data/Edison/Coll/Defaults.hs |
403 |
+@@ -14,8 +14,9 @@ |
404 |
+ module Data.Edison.Coll.Defaults where |
405 |
+ |
406 |
+ import Prelude hiding (null,foldr,foldl,foldr1,foldl1,lookup,filter) |
407 |
+-import Control.Monad.Identity |
408 |
++import qualified Control.Monad.Fail as Fail |
409 |
+ |
410 |
++import Data.Edison.Prelude ( runFail_ ) |
411 |
+ import Data.Edison.Coll |
412 |
+ import qualified Data.Edison.Seq as S |
413 |
+ import qualified Data.Edison.Seq.ListSeq as L |
414 |
+@@ -81,7 +82,7 @@ disjointUsingToOrdList xs ys = disj (toOrdList xs) (toOrdList ys) |
415 |
+ disj _ _ = True |
416 |
+ |
417 |
+ intersectWitnessUsingToOrdList :: |
418 |
+- (OrdColl c a, Monad m) => c -> c -> m (a,a) |
419 |
++ (OrdColl c a, Fail.MonadFail m) => c -> c -> m (a,a) |
420 |
+ intersectWitnessUsingToOrdList as bs = witness (toOrdList as) (toOrdList bs) |
421 |
+ where witness a@(x:xs) b@(y:ys) = |
422 |
+ case compare x y of |
423 |
+@@ -92,7 +93,7 @@ intersectWitnessUsingToOrdList as bs = witness (toOrdList as) (toOrdList bs) |
424 |
+ witness _ _ = fail $ instanceName as ++ ".intersect: failed" |
425 |
+ |
426 |
+ lookupUsingLookupM :: Coll c a => a -> c -> a |
427 |
+-lookupUsingLookupM x ys = runIdentity (lookupM x ys) |
428 |
++lookupUsingLookupM x ys = runFail_ (lookupM x ys) |
429 |
+ |
430 |
+ lookupUsingLookupAll :: Coll c a => a -> c -> a |
431 |
+ lookupUsingLookupAll x ys = |
432 |
+@@ -100,7 +101,7 @@ lookupUsingLookupAll x ys = |
433 |
+ (y:_) -> y |
434 |
+ [] -> error $ instanceName ys ++ ".lookup: lookup failed" |
435 |
+ |
436 |
+-lookupMUsingLookupAll :: (Coll c a, Monad m) => a -> c -> m a |
437 |
++lookupMUsingLookupAll :: (Coll c a, Fail.MonadFail m) => a -> c -> m a |
438 |
+ lookupMUsingLookupAll x ys = |
439 |
+ case lookupAll x ys of |
440 |
+ (y:_) -> return y |
441 |
+diff --git a/src/Data/Edison/Coll/EnumSet.hs b/src/Data/Edison/Coll/EnumSet.hs |
442 |
+index c93ab07..cce68e6 100644 |
443 |
+--- a/src/Data/Edison/Coll/EnumSet.hs |
444 |
++++ b/src/Data/Edison/Coll/EnumSet.hs |
445 |
+@@ -157,6 +157,7 @@ module Data.Edison.Coll.EnumSet ( |
446 |
+ |
447 |
+ import qualified Prelude |
448 |
+ import Prelude hiding (filter,foldl,foldr,null,map,lookup,foldl1,foldr1) |
449 |
++import qualified Control.Monad.Fail as Fail |
450 |
+ import qualified Data.Bits as Bits |
451 |
+ import Data.Bits hiding (complement) |
452 |
+ import Data.Word |
453 |
+@@ -251,7 +252,7 @@ count = countUsingMember |
454 |
+ lookup :: (Eq a, Enum a) => a -> Set a -> a |
455 |
+ lookup = lookupUsingLookupAll |
456 |
+ |
457 |
+-lookupM :: (Eq a, Enum a, Monad m) => a -> Set a -> m a |
458 |
++lookupM :: (Eq a, Enum a, Fail.MonadFail m) => a -> Set a -> m a |
459 |
+ lookupM x s |
460 |
+ | member x s = return x |
461 |
+ | otherwise = fail (moduleName++".lookupM: lookup failed") |
462 |
+@@ -340,12 +341,12 @@ deleteMax (Set w) |
463 |
+ | w == 0 = empty |
464 |
+ | otherwise = Set $ clearBit w $ msb w |
465 |
+ |
466 |
+-minView :: (Enum a, Monad m) => Set a -> m (a, Set a) |
467 |
++minView :: (Enum a, Fail.MonadFail m) => Set a -> m (a, Set a) |
468 |
+ minView (Set w) |
469 |
+ | w == 0 = fail (moduleName++".minView: empty set") |
470 |
+ | otherwise = let i = lsb w in return (toEnum i,Set $ clearBit w i) |
471 |
+ |
472 |
+-maxView :: (Enum a, Monad m) => Set a -> m (a, Set a) |
473 |
++maxView :: (Enum a, Fail.MonadFail m) => Set a -> m (a, Set a) |
474 |
+ maxView (Set w) |
475 |
+ | w == 0 = fail (moduleName++".maxView: empty set") |
476 |
+ | otherwise = let i = msb w in return (toEnum i, Set $ clearBit w i) |
477 |
+diff --git a/src/Data/Edison/Coll/LazyPairingHeap.hs b/src/Data/Edison/Coll/LazyPairingHeap.hs |
478 |
+index e41ce2e..3dcebe4 100644 |
479 |
+--- a/src/Data/Edison/Coll/LazyPairingHeap.hs |
480 |
++++ b/src/Data/Edison/Coll/LazyPairingHeap.hs |
481 |
+@@ -49,6 +49,7 @@ import Data.List (sort) |
482 |
+ import Data.Monoid |
483 |
+ import Data.Semigroup as SG |
484 |
+ import Control.Monad |
485 |
++import qualified Control.Monad.Fail as Fail |
486 |
+ import Test.QuickCheck |
487 |
+ |
488 |
+ moduleName :: String |
489 |
+@@ -359,7 +360,7 @@ lookupAll y h = look h S.empty |
490 |
+ EQ -> S.lcons x $ look i $ look xs rest |
491 |
+ GT -> rest |
492 |
+ |
493 |
+-minView :: (Ord a, Monad m) => Heap a -> m (a, Heap a) |
494 |
++minView :: (Ord a, Fail.MonadFail m) => Heap a -> m (a, Heap a) |
495 |
+ minView E = fail "LazyPairingHeap.minView: empty heap" |
496 |
+ minView (H1 x xs) = return (x,xs) |
497 |
+ minView (H2 x h xs) = return (x,union h xs) |
498 |
+@@ -369,7 +370,7 @@ minElem E = error "LazyPairingHeap.minElem: empty heap" |
499 |
+ minElem (H1 x _) = x |
500 |
+ minElem (H2 x _ _) = x |
501 |
+ |
502 |
+-maxView :: (Ord a, Monad m) => Heap a -> m (a, Heap a) |
503 |
++maxView :: (Ord a, Fail.MonadFail m) => Heap a -> m (a, Heap a) |
504 |
+ maxView E = fail "LazyPairingHeap.maxView: empty heap" |
505 |
+ maxView xs = return (y,xs') |
506 |
+ where (xs', y) = maxView' xs |
507 |
+@@ -474,7 +475,7 @@ deleteMax = deleteMaxUsingMaxView |
508 |
+ lookup :: Ord a => a -> Heap a -> a |
509 |
+ lookup = lookupUsingLookupAll |
510 |
+ |
511 |
+-lookupM :: (Ord a, Monad m) => a -> Heap a -> m a |
512 |
++lookupM :: (Ord a, Fail.MonadFail m) => a -> Heap a -> m a |
513 |
+ lookupM = lookupMUsingLookupAll |
514 |
+ |
515 |
+ lookupWithDefault :: Ord a => a -> a -> Heap a -> a |
516 |
+diff --git a/src/Data/Edison/Coll/LeftistHeap.hs b/src/Data/Edison/Coll/LeftistHeap.hs |
517 |
+index 751394b..10ccf5a 100644 |
518 |
+--- a/src/Data/Edison/Coll/LeftistHeap.hs |
519 |
++++ b/src/Data/Edison/Coll/LeftistHeap.hs |
520 |
+@@ -47,6 +47,7 @@ import Data.Edison.Coll.Defaults |
521 |
+ import Data.Monoid |
522 |
+ import Data.Semigroup as SG |
523 |
+ import Control.Monad |
524 |
++import qualified Control.Monad.Fail as Fail |
525 |
+ import Test.QuickCheck |
526 |
+ |
527 |
+ moduleName :: String |
528 |
+@@ -173,7 +174,7 @@ toSeq h = tol h S.empty |
529 |
+ where tol E rest = rest |
530 |
+ tol (L _ x a b) rest = S.lcons x (tol b (tol a rest)) |
531 |
+ |
532 |
+-lookupM :: (Ord a, Monad m) => a -> Heap a -> m a |
533 |
++lookupM :: (Ord a, Fail.MonadFail m) => a -> Heap a -> m a |
534 |
+ lookupM _ E = fail "LeftistHeap.lookupM: XXX" |
535 |
+ lookupM x (L _ y a b) = |
536 |
+ case compare x y of |
537 |
+@@ -299,7 +300,7 @@ partitionLT_GT y h = (h', C.unionList hs) |
538 |
+ (b', hs'') = collect b hs' |
539 |
+ in (node x a' b', hs'') |
540 |
+ |
541 |
+-minView :: (Ord a, Monad m) => Heap a -> m (a, Heap a) |
542 |
++minView :: (Ord a, Fail.MonadFail m) => Heap a -> m (a, Heap a) |
543 |
+ minView E = fail "LeftistHeap.minView: empty collection" |
544 |
+ minView (L _ x a b) = return (x, union a b) |
545 |
+ |
546 |
+@@ -307,7 +308,7 @@ minElem :: Ord a => Heap a -> a |
547 |
+ minElem E = error "LeftistHeap.minElem: empty collection" |
548 |
+ minElem (L _ x _ _) = x |
549 |
+ |
550 |
+-maxView :: (Ord a, Monad m) => Heap a -> m (a, Heap a) |
551 |
++maxView :: (Ord a, Fail.MonadFail m) => Heap a -> m (a, Heap a) |
552 |
+ maxView E = fail "LeftistHeap.maxView: empty collection" |
553 |
+ maxView (L _ x E _) = return (x, E) |
554 |
+ maxView (L _ x a E) = return (y, L 1 x a' E) |
555 |
+diff --git a/src/Data/Edison/Coll/MinHeap.hs b/src/Data/Edison/Coll/MinHeap.hs |
556 |
+index ba38960..94e2f1b 100644 |
557 |
+--- a/src/Data/Edison/Coll/MinHeap.hs |
558 |
++++ b/src/Data/Edison/Coll/MinHeap.hs |
559 |
+@@ -46,6 +46,7 @@ import Data.Edison.Seq.Defaults (tokenMatch,maybeParens) |
560 |
+ import Data.Monoid |
561 |
+ import qualified Data.Semigroup as SG |
562 |
+ import Control.Monad |
563 |
++import qualified Control.Monad.Fail as Fail |
564 |
+ import Test.QuickCheck |
565 |
+ |
566 |
+ data Min h a = E | M a h deriving (Eq) |
567 |
+@@ -75,7 +76,7 @@ strict :: (C.CollX h a,Ord a) => Min h a -> Min h a |
568 |
+ |
569 |
+ toSeq :: (C.Coll h a,S.Sequence s) => Min h a -> s a |
570 |
+ lookup :: (C.Coll h a,Ord a) => a -> Min h a -> a |
571 |
+-lookupM :: (C.Coll h a,Ord a,Monad m) => a -> Min h a -> m a |
572 |
++lookupM :: (C.Coll h a, Ord a, Fail.MonadFail m) => a -> Min h a -> m a |
573 |
+ lookupAll :: (C.Coll h a,Ord a,S.Sequence s) => a -> Min h a -> s a |
574 |
+ lookupWithDefault :: (C.Coll h a,Ord a) => a -> a -> Min h a -> a |
575 |
+ fold :: (C.Coll h a) => (a -> b -> b) -> b -> Min h a -> b |
576 |
+@@ -100,9 +101,9 @@ partitionLT_GE :: (C.OrdColl h a,Ord a) => a -> Min h a -> (Min h a, Min h a) |
577 |
+ partitionLE_GT :: (C.OrdColl h a,Ord a) => a -> Min h a -> (Min h a, Min h a) |
578 |
+ partitionLT_GT :: (C.OrdColl h a,Ord a) => a -> Min h a -> (Min h a, Min h a) |
579 |
+ |
580 |
+-minView :: (C.OrdColl h a,Ord a,Monad m) => Min h a -> m (a, Min h a) |
581 |
++minView :: (C.OrdColl h a, Ord a, Fail.MonadFail m) => Min h a -> m (a, Min h a) |
582 |
+ minElem :: (C.OrdColl h a,Ord a) => Min h a -> a |
583 |
+-maxView :: (C.OrdColl h a,Ord a,Monad m) => Min h a -> m (a, Min h a) |
584 |
++maxView :: (C.OrdColl h a, Ord a, Fail.MonadFail m) => Min h a -> m (a, Min h a) |
585 |
+ maxElem :: (C.OrdColl h a,Ord a) => Min h a -> a |
586 |
+ foldr :: (C.OrdColl h a,Ord a) => (a -> b -> b) -> b -> Min h a -> b |
587 |
+ foldl :: (C.OrdColl h a,Ord a) => (b -> a -> b) -> b -> Min h a -> b |
588 |
+diff --git a/src/Data/Edison/Coll/SkewHeap.hs b/src/Data/Edison/Coll/SkewHeap.hs |
589 |
+index 1a05ebe..e55ba58 100644 |
590 |
+--- a/src/Data/Edison/Coll/SkewHeap.hs |
591 |
++++ b/src/Data/Edison/Coll/SkewHeap.hs |
592 |
+@@ -47,6 +47,7 @@ import Data.Edison.Coll.Defaults |
593 |
+ import Data.Monoid |
594 |
+ import Data.Semigroup as SG |
595 |
+ import Control.Monad |
596 |
++import qualified Control.Monad.Fail as Fail |
597 |
+ |
598 |
+ import Test.QuickCheck |
599 |
+ |
600 |
+@@ -142,7 +143,7 @@ toSeq h = tol h S.empty |
601 |
+ where tol E rest = rest |
602 |
+ tol (T x a b) rest = S.lcons x (tol b (tol a rest)) |
603 |
+ |
604 |
+-lookupM :: (Ord a, Monad m) => a -> Heap a -> m a |
605 |
++lookupM :: (Ord a, Fail.MonadFail m) => a -> Heap a -> m a |
606 |
+ lookupM _ E = fail "SkewHeap.lookupM: XXX" |
607 |
+ lookupM x (T y a b) = |
608 |
+ case compare x y of |
609 |
+@@ -267,7 +268,7 @@ partitionLT_GT y h = (h', C.unionList hs) |
610 |
+ (b', hs'') = collect b hs' |
611 |
+ in (T x a' b', hs'') |
612 |
+ |
613 |
+-minView :: (Ord a, Monad m) => Heap a -> m (a, Heap a) |
614 |
++minView :: (Ord a, Fail.MonadFail m) => Heap a -> m (a, Heap a) |
615 |
+ minView E = fail "SkewHeap.minView: empty heap" |
616 |
+ minView (T x a b) = return (x, union a b) |
617 |
+ |
618 |
+@@ -275,7 +276,7 @@ minElem :: Ord a => Heap a -> a |
619 |
+ minElem E = error "SkewHeap.minElem: empty collection" |
620 |
+ minElem (T x _ _) = x |
621 |
+ |
622 |
+-maxView :: (Ord a, Monad m) => Heap a -> m (a, Heap a) |
623 |
++maxView :: (Ord a, Fail.MonadFail m) => Heap a -> m (a, Heap a) |
624 |
+ maxView E = fail "SkewHeap.maxView: empty heap" |
625 |
+ maxView (T x E E) = return (x, E) |
626 |
+ maxView (T x a E) = return (y, T x a' E) |
627 |
+diff --git a/src/Data/Edison/Coll/SplayHeap.hs b/src/Data/Edison/Coll/SplayHeap.hs |
628 |
+index 4e3b061..6c950b7 100644 |
629 |
+--- a/src/Data/Edison/Coll/SplayHeap.hs |
630 |
++++ b/src/Data/Edison/Coll/SplayHeap.hs |
631 |
+@@ -50,6 +50,7 @@ import Data.Edison.Coll.Defaults |
632 |
+ import Data.Monoid |
633 |
+ import Data.Semigroup as SG |
634 |
+ import Control.Monad |
635 |
++import qualified Control.Monad.Fail as Fail |
636 |
+ import Test.QuickCheck |
637 |
+ |
638 |
+ moduleName :: String |
639 |
+@@ -93,7 +94,7 @@ strict :: Heap a -> Heap a |
640 |
+ |
641 |
+ toSeq :: (Ord a, S.Sequence s) => Heap a -> s a |
642 |
+ lookup :: Ord a => a -> Heap a -> a |
643 |
+-lookupM :: (Ord a,Monad m) => a -> Heap a -> m a |
644 |
++lookupM :: (Ord a, Fail.MonadFail m) => a -> Heap a -> m a |
645 |
+ lookupAll :: (Ord a,S.Sequence s) => a -> Heap a -> s a |
646 |
+ lookupWithDefault :: Ord a => a -> a -> Heap a -> a |
647 |
+ fold :: Ord a => (a -> b -> b) -> b -> Heap a -> b |
648 |
+@@ -118,9 +119,9 @@ partitionLT_GE :: Ord a => a -> Heap a -> (Heap a, Heap a) |
649 |
+ partitionLE_GT :: Ord a => a -> Heap a -> (Heap a, Heap a) |
650 |
+ partitionLT_GT :: Ord a => a -> Heap a -> (Heap a, Heap a) |
651 |
+ |
652 |
+-minView :: (Ord a,Monad m) => Heap a -> m (a, Heap a) |
653 |
++minView :: (Ord a, Fail.MonadFail m) => Heap a -> m (a, Heap a) |
654 |
+ minElem :: Ord a => Heap a -> a |
655 |
+-maxView :: (Ord a,Monad m) => Heap a -> m (a, Heap a) |
656 |
++maxView :: (Ord a, Fail.MonadFail m) => Heap a -> m (a, Heap a) |
657 |
+ maxElem :: Ord a => Heap a -> a |
658 |
+ foldr :: Ord a => (a -> b -> b) -> b -> Heap a -> b |
659 |
+ foldl :: Ord a => (b -> a -> b) -> b -> Heap a -> b |
660 |
+diff --git a/src/Data/Edison/Coll/StandardSet.hs b/src/Data/Edison/Coll/StandardSet.hs |
661 |
+index fcaf715..56df4bf 100644 |
662 |
+--- a/src/Data/Edison/Coll/StandardSet.hs |
663 |
++++ b/src/Data/Edison/Coll/StandardSet.hs |
664 |
+@@ -43,6 +43,7 @@ module Data.Edison.Coll.StandardSet ( |
665 |
+ |
666 |
+ import Prelude hiding (null,foldr,foldl,foldr1,foldl1,lookup,filter) |
667 |
+ import qualified Prelude |
668 |
++import qualified Control.Monad.Fail as Fail |
669 |
+ import qualified Data.List |
670 |
+ |
671 |
+ import qualified Data.Edison.Coll as C |
672 |
+@@ -73,7 +74,7 @@ strict :: Ord a => Set a -> Set a |
673 |
+ |
674 |
+ toSeq :: (Ord a,S.Sequence seq) => Set a -> seq a |
675 |
+ lookup :: Ord a => a -> Set a -> a |
676 |
+-lookupM :: (Ord a,Monad m) => a -> Set a -> m a |
677 |
++lookupM :: (Ord a, Monad m, Fail.MonadFail m) => a -> Set a -> m a |
678 |
+ lookupAll :: (Ord a,S.Sequence seq) => a -> Set a -> seq a |
679 |
+ lookupWithDefault :: Ord a => a -> a -> Set a -> a |
680 |
+ fold :: (a -> b -> b) -> b -> Set a -> b |
681 |
+@@ -98,9 +99,9 @@ partitionLT_GE :: Ord a => a -> Set a -> (Set a, Set a) |
682 |
+ partitionLE_GT :: Ord a => a -> Set a -> (Set a, Set a) |
683 |
+ partitionLT_GT :: Ord a => a -> Set a -> (Set a, Set a) |
684 |
+ |
685 |
+-minView :: (Ord a,Monad m) => Set a -> m (a, Set a) |
686 |
++minView :: (Ord a, Monad m, Fail.MonadFail m) => Set a -> m (a, Set a) |
687 |
+ minElem :: Set a -> a |
688 |
+-maxView :: (Ord a,Monad m) => Set a -> m (a, Set a) |
689 |
++maxView :: (Ord a, Monad m, Fail.MonadFail m) => Set a -> m (a, Set a) |
690 |
+ maxElem :: Set a -> a |
691 |
+ foldr :: (a -> b -> b) -> b -> Set a -> b |
692 |
+ foldl :: (b -> a -> b) -> b -> Set a -> b |
693 |
+diff --git a/src/Data/Edison/Coll/UnbalancedSet.hs b/src/Data/Edison/Coll/UnbalancedSet.hs |
694 |
+index 03cb856..d7975d0 100644 |
695 |
+--- a/src/Data/Edison/Coll/UnbalancedSet.hs |
696 |
++++ b/src/Data/Edison/Coll/UnbalancedSet.hs |
697 |
+@@ -43,6 +43,7 @@ module Data.Edison.Coll.UnbalancedSet ( |
698 |
+ |
699 |
+ import Prelude hiding (null,foldr,foldl,foldr1,foldl1,lookup,filter) |
700 |
+ import qualified Prelude |
701 |
++import qualified Control.Monad.Fail as Fail |
702 |
+ import qualified Data.Edison.Coll as C |
703 |
+ import qualified Data.Edison.Seq as S |
704 |
+ import Data.Edison.Coll.Defaults |
705 |
+@@ -70,7 +71,7 @@ strict :: Set a -> Set a |
706 |
+ |
707 |
+ toSeq :: (Ord a,S.Sequence seq) => Set a -> seq a |
708 |
+ lookup :: Ord a => a -> Set a -> a |
709 |
+-lookupM :: (Ord a,Monad m) => a -> Set a -> m a |
710 |
++lookupM :: (Ord a, Fail.MonadFail m) => a -> Set a -> m a |
711 |
+ lookupAll :: (Ord a,S.Sequence seq) => a -> Set a -> seq a |
712 |
+ lookupWithDefault :: Ord a => a -> a -> Set a -> a |
713 |
+ fold :: (a -> b -> b) -> b -> Set a -> b |
714 |
+@@ -95,9 +96,9 @@ partitionLT_GE :: Ord a => a -> Set a -> (Set a, Set a) |
715 |
+ partitionLE_GT :: Ord a => a -> Set a -> (Set a, Set a) |
716 |
+ partitionLT_GT :: Ord a => a -> Set a -> (Set a, Set a) |
717 |
+ |
718 |
+-minView :: (Monad m) => Set a -> m (a, Set a) |
719 |
++minView :: (Fail.MonadFail m) => Set a -> m (a, Set a) |
720 |
+ minElem :: Set a -> a |
721 |
+-maxView :: (Monad m) => Set a -> m (a, Set a) |
722 |
++maxView :: (Fail.MonadFail m) => Set a -> m (a, Set a) |
723 |
+ maxElem :: Set a -> a |
724 |
+ foldr :: (a -> b -> b) -> b -> Set a -> b |
725 |
+ foldl :: (b -> a -> b) -> b -> Set a -> b |
726 |
+diff --git a/src/Data/Edison/Concrete/FingerTree.hs b/src/Data/Edison/Concrete/FingerTree.hs |
727 |
+index 47f766c..c6a2ac0 100644 |
728 |
+--- a/src/Data/Edison/Concrete/FingerTree.hs |
729 |
++++ b/src/Data/Edison/Concrete/FingerTree.hs |
730 |
+@@ -81,6 +81,7 @@ import Test.QuickCheck |
731 |
+ import Data.Edison.Prelude |
732 |
+ |
733 |
+ import Control.Monad (liftM2, liftM3, liftM4) |
734 |
++import qualified Control.Monad.Fail as Fail |
735 |
+ |
736 |
+ |
737 |
+ infixr 5 `lcons` |
738 |
+@@ -334,7 +335,7 @@ null Empty = True |
739 |
+ null _ = False |
740 |
+ |
741 |
+ -- | /O(1)/. Analyse the left end of a sequence. |
742 |
+-lview :: (Measured v a, Monad m) => FingerTree v a -> m (a,FingerTree v a) |
743 |
++lview :: (Measured v a, Fail.MonadFail m) => FingerTree v a -> m (a,FingerTree v a) |
744 |
+ lview Empty = fail "FingerTree.lview: empty tree" |
745 |
+ lview (Single x) = return (x, Empty) |
746 |
+ lview (Deep _ (One x) m sf) = return . (,) x $ |
747 |
+@@ -357,7 +358,7 @@ ltailDigit (Four _ b c d) = Three b c d |
748 |
+ ltailDigit _ = error "FingerTree.ltailDigit: bug!" |
749 |
+ |
750 |
+ -- | /O(1)/. Analyse the right end of a sequence. |
751 |
+-rview :: (Measured v a, Monad m) => FingerTree v a -> m (a, FingerTree v a) |
752 |
++rview :: (Measured v a, Fail.MonadFail m) => FingerTree v a -> m (a, FingerTree v a) |
753 |
+ rview Empty = fail "FingerTree.rview: empty tree" |
754 |
+ rview (Single x) = return (x, Empty) |
755 |
+ rview (Deep _ pr m (One x)) = return . (,) x $ |
756 |
+diff --git a/src/Data/Edison/Seq/BankersQueue.hs b/src/Data/Edison/Seq/BankersQueue.hs |
757 |
+index 6dac746..0ab24c9 100644 |
758 |
+--- a/src/Data/Edison/Seq/BankersQueue.hs |
759 |
++++ b/src/Data/Edison/Seq/BankersQueue.hs |
760 |
+@@ -51,11 +51,13 @@ import Prelude hiding (concat,reverse,map,concatMap,foldr,foldl,foldr1,foldl1, |
761 |
+ |
762 |
+ import qualified Control.Applicative as App |
763 |
+ |
764 |
++import Data.Edison.Prelude ( runFail_ ) |
765 |
+ import qualified Data.Edison.Seq as S ( Sequence(..) ) |
766 |
+ import Data.Edison.Seq.Defaults |
767 |
+ import qualified Data.Edison.Seq.ListSeq as L |
768 |
+ import Data.Monoid |
769 |
+ import Data.Semigroup as SG |
770 |
++import qualified Control.Monad.Fail as Fail |
771 |
+ import Control.Monad.Identity |
772 |
+ import Test.QuickCheck |
773 |
+ |
774 |
+@@ -66,16 +68,16 @@ singleton :: a -> Seq a |
775 |
+ lcons :: a -> Seq a -> Seq a |
776 |
+ rcons :: a -> Seq a -> Seq a |
777 |
+ append :: Seq a -> Seq a -> Seq a |
778 |
+-lview :: (Monad m) => Seq a -> m (a, Seq a) |
779 |
++lview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
780 |
+ lhead :: Seq a -> a |
781 |
+-lheadM :: (Monad m) => Seq a -> m a |
782 |
++lheadM :: (Fail.MonadFail m) => Seq a -> m a |
783 |
+ ltail :: Seq a -> Seq a |
784 |
+-ltailM :: (Monad m) => Seq a -> m (Seq a) |
785 |
+-rview :: (Monad m) => Seq a -> m (a, Seq a) |
786 |
++ltailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
787 |
++rview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
788 |
+ rhead :: Seq a -> a |
789 |
+-rheadM :: (Monad m) => Seq a -> m a |
790 |
++rheadM :: (Fail.MonadFail m) => Seq a -> m a |
791 |
+ rtail :: Seq a -> Seq a |
792 |
+-rtailM :: (Monad m) => Seq a -> m (Seq a) |
793 |
++rtailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
794 |
+ null :: Seq a -> Bool |
795 |
+ size :: Seq a -> Int |
796 |
+ concat :: Seq (Seq a) -> Seq a |
797 |
+@@ -106,7 +108,7 @@ reduce1' :: (a -> a -> a) -> Seq a -> a |
798 |
+ copy :: Int -> a -> Seq a |
799 |
+ inBounds :: Int -> Seq a -> Bool |
800 |
+ lookup :: Int -> Seq a -> a |
801 |
+-lookupM :: (Monad m) => Int -> Seq a -> m a |
802 |
++lookupM :: (Fail.MonadFail m) => Int -> Seq a -> m a |
803 |
+ lookupWithDefault :: a -> Int -> Seq a -> a |
804 |
+ update :: Int -> a -> Seq a -> Seq a |
805 |
+ adjust :: (a -> a) -> Int -> Seq a -> Seq a |
806 |
+@@ -263,7 +265,7 @@ copy n x |
807 |
+ |
808 |
+ -- reduce1: given sizes could do more effective job of dividing evenly! |
809 |
+ |
810 |
+-lookup idx q = runIdentity (lookupM idx q) |
811 |
++lookup idx q = runFail_ (lookupM idx q) |
812 |
+ |
813 |
+ lookupM idx (Q i xs ys j) |
814 |
+ | idx < i = L.lookupM idx xs |
815 |
+diff --git a/src/Data/Edison/Seq/BinaryRandList.hs b/src/Data/Edison/Seq/BinaryRandList.hs |
816 |
+index b01b9b8..e772b65 100644 |
817 |
+--- a/src/Data/Edison/Seq/BinaryRandList.hs |
818 |
++++ b/src/Data/Edison/Seq/BinaryRandList.hs |
819 |
+@@ -55,14 +55,15 @@ import Prelude hiding (concat,reverse,map,concatMap,foldr,foldl,foldr1,foldl1, |
820 |
+ zip,zip3,zipWith,zipWith3,unzip,unzip3,null) |
821 |
+ |
822 |
+ import qualified Control.Applicative as App |
823 |
+-import Control.Monad.Identity |
824 |
+ import Data.Maybe |
825 |
+ |
826 |
++import Data.Edison.Prelude ( runFail_ ) |
827 |
+ import qualified Data.Edison.Seq as S ( Sequence(..) ) |
828 |
+ import Data.Edison.Seq.Defaults |
829 |
+ import Data.Monoid |
830 |
+ import Data.Semigroup as SG |
831 |
+ import Control.Monad |
832 |
++import qualified Control.Monad.Fail as Fail |
833 |
+ import Test.QuickCheck |
834 |
+ |
835 |
+ -- signatures for exported functions |
836 |
+@@ -72,16 +73,16 @@ singleton :: a -> Seq a |
837 |
+ lcons :: a -> Seq a -> Seq a |
838 |
+ rcons :: a -> Seq a -> Seq a |
839 |
+ append :: Seq a -> Seq a -> Seq a |
840 |
+-lview :: (Monad m) => Seq a -> m (a, Seq a) |
841 |
++lview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
842 |
+ lhead :: Seq a -> a |
843 |
+-lheadM :: (Monad m) => Seq a -> m a |
844 |
++lheadM :: (Fail.MonadFail m) => Seq a -> m a |
845 |
+ ltail :: Seq a -> Seq a |
846 |
+-ltailM :: (Monad m) => Seq a -> m (Seq a) |
847 |
+-rview :: (Monad m) => Seq a -> m (a, Seq a) |
848 |
++ltailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
849 |
++rview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
850 |
+ rhead :: Seq a -> a |
851 |
+-rheadM :: (Monad m) => Seq a -> m a |
852 |
++rheadM :: (Fail.MonadFail m) => Seq a -> m a |
853 |
+ rtail :: Seq a -> Seq a |
854 |
+-rtailM :: (Monad m) => Seq a -> m (Seq a) |
855 |
++rtailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
856 |
+ null :: Seq a -> Bool |
857 |
+ size :: Seq a -> Int |
858 |
+ concat :: Seq (Seq a) -> Seq a |
859 |
+@@ -112,7 +113,7 @@ reduce1' :: (a -> a -> a) -> Seq a -> a |
860 |
+ copy :: Int -> a -> Seq a |
861 |
+ inBounds :: Int -> Seq a -> Bool |
862 |
+ lookup :: Int -> Seq a -> a |
863 |
+-lookupM :: (Monad m) => Int -> Seq a -> m a |
864 |
++lookupM :: (Fail.MonadFail m) => Int -> Seq a -> m a |
865 |
+ lookupWithDefault :: a -> Int -> Seq a -> a |
866 |
+ update :: Int -> a -> Seq a -> Seq a |
867 |
+ adjust :: (a -> a) -> Int -> Seq a -> Seq a |
868 |
+@@ -267,7 +268,7 @@ inBounds i xs = (i >= 0) && inb xs i |
869 |
+ inb (Even ps) i = inb ps (half i) |
870 |
+ inb (Odd _ ps) i = (i == 0) || inb ps (half (i-1)) |
871 |
+ |
872 |
+-lookup i xs = runIdentity (lookupM i xs) |
873 |
++lookup i xs = runFail_ (lookupM i xs) |
874 |
+ |
875 |
+ lookupM i xs |
876 |
+ | i < 0 = fail "BinaryRandList.lookup: bad subscript" |
877 |
+diff --git a/src/Data/Edison/Seq/BraunSeq.hs b/src/Data/Edison/Seq/BraunSeq.hs |
878 |
+index 7f6f33b..11236e3 100644 |
879 |
+--- a/src/Data/Edison/Seq/BraunSeq.hs |
880 |
++++ b/src/Data/Edison/Seq/BraunSeq.hs |
881 |
+@@ -72,6 +72,7 @@ import Prelude hiding (concat,reverse,map,concatMap,foldr,foldl,foldr1,foldl1, |
882 |
+ zip,zip3,zipWith,zipWith3,unzip,unzip3,null) |
883 |
+ |
884 |
+ import qualified Control.Applicative as App |
885 |
++import qualified Control.Monad.Fail as Fail |
886 |
+ import Control.Monad.Identity |
887 |
+ import Data.Maybe |
888 |
+ import Data.Monoid |
889 |
+@@ -79,6 +80,7 @@ import Data.Semigroup as SG |
890 |
+ import Test.QuickCheck |
891 |
+ |
892 |
+ |
893 |
++import Data.Edison.Prelude ( runFail_ ) |
894 |
+ import qualified Data.Edison.Seq as S ( Sequence(..) ) |
895 |
+ import Data.Edison.Seq.Defaults |
896 |
+ import qualified Data.Edison.Seq.ListSeq as L |
897 |
+@@ -91,16 +93,16 @@ singleton :: a -> Seq a |
898 |
+ lcons :: a -> Seq a -> Seq a |
899 |
+ rcons :: a -> Seq a -> Seq a |
900 |
+ append :: Seq a -> Seq a -> Seq a |
901 |
+-lview :: (Monad m) => Seq a -> m (a, Seq a) |
902 |
++lview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
903 |
+ lhead :: Seq a -> a |
904 |
+-lheadM :: (Monad m) => Seq a -> m a |
905 |
++lheadM :: (Fail.MonadFail m) => Seq a -> m a |
906 |
+ ltail :: Seq a -> Seq a |
907 |
+-ltailM :: (Monad m) => Seq a -> m (Seq a) |
908 |
+-rview :: (Monad m) => Seq a -> m (a, Seq a) |
909 |
++ltailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
910 |
++rview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
911 |
+ rhead :: Seq a -> a |
912 |
+-rheadM :: (Monad m) => Seq a -> m a |
913 |
++rheadM :: (Fail.MonadFail m) => Seq a -> m a |
914 |
+ rtail :: Seq a -> Seq a |
915 |
+-rtailM :: (Monad m) => Seq a -> m (Seq a) |
916 |
++rtailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
917 |
+ null :: Seq a -> Bool |
918 |
+ size :: Seq a -> Int |
919 |
+ concat :: Seq (Seq a) -> Seq a |
920 |
+@@ -131,7 +133,7 @@ reduce1' :: (a -> a -> a) -> Seq a -> a |
921 |
+ copy :: Int -> a -> Seq a |
922 |
+ inBounds :: Int -> Seq a -> Bool |
923 |
+ lookup :: Int -> Seq a -> a |
924 |
+-lookupM :: (Monad m) => Int -> Seq a -> m a |
925 |
++lookupM :: (Fail.MonadFail m) => Int -> Seq a -> m a |
926 |
+ lookupWithDefault :: a -> Int -> Seq a -> a |
927 |
+ update :: Int -> a -> Seq a -> Seq a |
928 |
+ adjust :: (a -> a) -> Int -> Seq a -> Seq a |
929 |
+@@ -344,7 +346,7 @@ inBounds i xs = (i >= 0) && inb xs i |
930 |
+ | i == 0 = True |
931 |
+ | otherwise = inb b (half i - 1) |
932 |
+ |
933 |
+-lookup i xs = runIdentity (lookupM i xs) |
934 |
++lookup i xs = runFail_ (lookupM i xs) |
935 |
+ |
936 |
+ lookupM i xs |
937 |
+ | i < 0 = fail "BraunSeq.lookupM: bad subscript" |
938 |
+diff --git a/src/Data/Edison/Seq/Defaults.hs b/src/Data/Edison/Seq/Defaults.hs |
939 |
+index ed593dc..eae6a09 100644 |
940 |
+--- a/src/Data/Edison/Seq/Defaults.hs |
941 |
++++ b/src/Data/Edison/Seq/Defaults.hs |
942 |
+@@ -17,9 +17,11 @@ import Prelude hiding (concat,reverse,map,concatMap,foldr,foldl,foldr1,foldl1, |
943 |
+ filter,takeWhile,dropWhile,lookup,take,drop,splitAt, |
944 |
+ zip,zip3,zipWith,zipWith3,unzip,unzip3,null) |
945 |
+ |
946 |
++import qualified Control.Monad.Fail as Fail |
947 |
+ import Control.Monad.Identity |
948 |
+ import Data.Char (isSpace) |
949 |
+ |
950 |
++import Data.Edison.Prelude ( runFail_ ) |
951 |
+ import Data.Edison.Seq |
952 |
+ import qualified Data.Edison.Seq.ListSeq as L |
953 |
+ |
954 |
+@@ -33,7 +35,7 @@ appendUsingFoldr :: Sequence s => s a -> s a -> s a |
955 |
+ appendUsingFoldr s t | null t = s |
956 |
+ | otherwise = foldr lcons t s |
957 |
+ |
958 |
+-rviewDefault :: (Monad m, Sequence s) => s a -> m (a, s a) |
959 |
++rviewDefault :: (Fail.MonadFail m, Sequence s) => s a -> m (a, s a) |
960 |
+ rviewDefault xs |
961 |
+ | null xs = fail $ instanceName xs ++ ".rview: empty sequence" |
962 |
+ | otherwise = return (rhead xs, rtail xs) |
963 |
+@@ -49,7 +51,7 @@ rtailUsingLview xs = |
964 |
+ Nothing -> empty |
965 |
+ Just (y, ys) -> lcons x (rt y ys) |
966 |
+ |
967 |
+-rtailMUsingLview :: (Monad m,Sequence s) => s a -> m (s a) |
968 |
++rtailMUsingLview :: (Fail.MonadFail m, Sequence s) => s a -> m (s a) |
969 |
+ rtailMUsingLview xs = |
970 |
+ case lview xs of |
971 |
+ Nothing -> fail $ instanceName xs ++ ".rtailM: empty sequence" |
972 |
+@@ -200,7 +202,7 @@ inBoundsUsingSize :: Sequence s => Int -> s a -> Bool |
973 |
+ inBoundsUsingSize i s = i >= 0 && i < size s |
974 |
+ |
975 |
+ lookupUsingLookupM :: Sequence s => Int -> s a -> a |
976 |
+-lookupUsingLookupM i s = runIdentity (lookupM i s) |
977 |
++lookupUsingLookupM i s = runFail_ (lookupM i s) |
978 |
+ |
979 |
+ lookupUsingDrop :: Sequence s => Int -> s a -> a |
980 |
+ lookupUsingDrop i s |
981 |
+@@ -220,7 +222,7 @@ lookupWithDefaultUsingDrop d i s |
982 |
+ | otherwise = lhead s' |
983 |
+ where s' = drop i s |
984 |
+ |
985 |
+-lookupMUsingDrop :: (Monad m, Sequence s) => Int -> s a -> m a |
986 |
++lookupMUsingDrop :: (Fail.MonadFail m, Sequence s) => Int -> s a -> m a |
987 |
+ lookupMUsingDrop i s |
988 |
+ -- XXX better error message! |
989 |
+ | i < 0 || null s' = fail $ instanceName s |
990 |
+diff --git a/src/Data/Edison/Seq/FingerSeq.hs b/src/Data/Edison/Seq/FingerSeq.hs |
991 |
+index c74c70b..a34254c 100644 |
992 |
+--- a/src/Data/Edison/Seq/FingerSeq.hs |
993 |
++++ b/src/Data/Edison/Seq/FingerSeq.hs |
994 |
+@@ -37,9 +37,10 @@ import Prelude hiding (concat,reverse,map,concatMap,foldr,foldl,foldr1,foldl1, |
995 |
+ zip,zip3,zipWith,zipWith3,unzip,unzip3,null) |
996 |
+ |
997 |
+ import qualified Control.Applicative as App |
998 |
+-import Data.Edison.Prelude (measure, Measured()) |
999 |
++import Data.Edison.Prelude (measure, Measured(), runFail_) |
1000 |
+ import qualified Data.Edison.Seq as S |
1001 |
+ import Data.Edison.Seq.Defaults |
1002 |
++import qualified Control.Monad.Fail as Fail |
1003 |
+ import Control.Monad.Identity |
1004 |
+ import Data.Monoid |
1005 |
+ import Data.Semigroup as SG |
1006 |
+@@ -87,16 +88,16 @@ singleton :: a -> Seq a |
1007 |
+ lcons :: a -> Seq a -> Seq a |
1008 |
+ rcons :: a -> Seq a -> Seq a |
1009 |
+ append :: Seq a -> Seq a -> Seq a |
1010 |
+-lview :: (Monad m) => Seq a -> m (a, Seq a) |
1011 |
++lview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
1012 |
+ lhead :: Seq a -> a |
1013 |
+-lheadM :: (Monad m) => Seq a -> m a |
1014 |
++lheadM :: (Fail.MonadFail m) => Seq a -> m a |
1015 |
+ ltail :: Seq a -> Seq a |
1016 |
+-ltailM :: (Monad m) => Seq a -> m (Seq a) |
1017 |
+-rview :: (Monad m) => Seq a -> m (a, Seq a) |
1018 |
++ltailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
1019 |
++rview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
1020 |
+ rhead :: Seq a -> a |
1021 |
+-rheadM :: (Monad m) => Seq a -> m a |
1022 |
++rheadM :: (Fail.MonadFail m) => Seq a -> m a |
1023 |
+ rtail :: Seq a -> Seq a |
1024 |
+-rtailM :: (Monad m) => Seq a -> m (Seq a) |
1025 |
++rtailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
1026 |
+ null :: Seq a -> Bool |
1027 |
+ size :: Seq a -> Int |
1028 |
+ concat :: Seq (Seq a) -> Seq a |
1029 |
+@@ -127,7 +128,7 @@ reduce1' :: (a -> a -> a) -> Seq a -> a |
1030 |
+ copy :: Int -> a -> Seq a |
1031 |
+ inBounds :: Int -> Seq a -> Bool |
1032 |
+ lookup :: Int -> Seq a -> a |
1033 |
+-lookupM :: (Monad m) => Int -> Seq a -> m a |
1034 |
++lookupM :: (Fail.MonadFail m) => Int -> Seq a -> m a |
1035 |
+ lookupWithDefault :: a -> Int -> Seq a -> a |
1036 |
+ update :: Int -> a -> Seq a -> Seq a |
1037 |
+ adjust :: (a -> a) -> Int -> Seq a -> Seq a |
1038 |
+@@ -206,10 +207,10 @@ lheadM xs = lview xs >>= return . fst |
1039 |
+ ltailM xs = lview xs >>= return . snd |
1040 |
+ rheadM xs = rview xs >>= return . fst |
1041 |
+ rtailM xs = rview xs >>= return . snd |
1042 |
+-lhead = runIdentity . lheadM |
1043 |
+-ltail = runIdentity . ltailM |
1044 |
+-rhead = runIdentity . rheadM |
1045 |
+-rtail = runIdentity . rtailM |
1046 |
++lhead = runFail_ . lheadM |
1047 |
++ltail = runFail_ . ltailM |
1048 |
++rhead = runFail_ . rheadM |
1049 |
++rtail = runFail_ . rtailM |
1050 |
+ |
1051 |
+ fold = foldr |
1052 |
+ fold' = foldr' |
1053 |
+diff --git a/src/Data/Edison/Seq/JoinList.hs b/src/Data/Edison/Seq/JoinList.hs |
1054 |
+index 6922023..05855ba 100644 |
1055 |
+--- a/src/Data/Edison/Seq/JoinList.hs |
1056 |
++++ b/src/Data/Edison/Seq/JoinList.hs |
1057 |
+@@ -57,6 +57,7 @@ import qualified Control.Applicative as App |
1058 |
+ |
1059 |
+ import Data.Edison.Seq.Defaults |
1060 |
+ import Control.Monad |
1061 |
++import qualified Control.Monad.Fail as Fail |
1062 |
+ import Data.Monoid |
1063 |
+ import Data.Semigroup as SG |
1064 |
+ import Test.QuickCheck |
1065 |
+@@ -68,16 +69,16 @@ singleton :: a -> Seq a |
1066 |
+ lcons :: a -> Seq a -> Seq a |
1067 |
+ rcons :: a -> Seq a -> Seq a |
1068 |
+ append :: Seq a -> Seq a -> Seq a |
1069 |
+-lview :: (Monad m) => Seq a -> m (a, Seq a) |
1070 |
++lview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
1071 |
+ lhead :: Seq a -> a |
1072 |
+-lheadM :: (Monad m) => Seq a -> m a |
1073 |
++lheadM :: (Fail.MonadFail m) => Seq a -> m a |
1074 |
+ ltail :: Seq a -> Seq a |
1075 |
+-ltailM :: (Monad m) => Seq a -> m (Seq a) |
1076 |
+-rview :: (Monad m) => Seq a -> m (a, Seq a) |
1077 |
++ltailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
1078 |
++rview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
1079 |
+ rhead :: Seq a -> a |
1080 |
+-rheadM :: (Monad m) => Seq a -> m a |
1081 |
++rheadM :: (Fail.MonadFail m) => Seq a -> m a |
1082 |
+ rtail :: Seq a -> Seq a |
1083 |
+-rtailM :: (Monad m) => Seq a -> m (Seq a) |
1084 |
++rtailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
1085 |
+ null :: Seq a -> Bool |
1086 |
+ size :: Seq a -> Int |
1087 |
+ concat :: Seq (Seq a) -> Seq a |
1088 |
+@@ -108,7 +109,7 @@ reduce1' :: (a -> a -> a) -> Seq a -> a |
1089 |
+ copy :: Int -> a -> Seq a |
1090 |
+ inBounds :: Int -> Seq a -> Bool |
1091 |
+ lookup :: Int -> Seq a -> a |
1092 |
+-lookupM :: (Monad m) => Int -> Seq a -> m a |
1093 |
++lookupM :: (Fail.MonadFail m) => Int -> Seq a -> m a |
1094 |
+ lookupWithDefault :: a -> Int -> Seq a -> a |
1095 |
+ update :: Int -> a -> Seq a -> Seq a |
1096 |
+ adjust :: (a -> a) -> Int -> Seq a -> Seq a |
1097 |
+diff --git a/src/Data/Edison/Seq/MyersStack.hs b/src/Data/Edison/Seq/MyersStack.hs |
1098 |
+index 30eb197..eca46a5 100644 |
1099 |
+--- a/src/Data/Edison/Seq/MyersStack.hs |
1100 |
++++ b/src/Data/Edison/Seq/MyersStack.hs |
1101 |
+@@ -49,8 +49,10 @@ import Prelude hiding (concat,reverse,map,concatMap,foldr,foldl,foldr1,foldl1, |
1102 |
+ zip,zip3,zipWith,zipWith3,unzip,unzip3,null) |
1103 |
+ |
1104 |
+ import qualified Control.Applicative as App |
1105 |
++import Data.Edison.Prelude ( runFail_ ) |
1106 |
+ import qualified Data.Edison.Seq as S ( Sequence(..) ) |
1107 |
+ import Data.Edison.Seq.Defaults |
1108 |
++import qualified Control.Monad.Fail as Fail |
1109 |
+ import Control.Monad.Identity |
1110 |
+ import Data.Monoid |
1111 |
+ import Data.Semigroup as SG |
1112 |
+@@ -63,16 +65,16 @@ singleton :: a -> Seq a |
1113 |
+ lcons :: a -> Seq a -> Seq a |
1114 |
+ rcons :: a -> Seq a -> Seq a |
1115 |
+ append :: Seq a -> Seq a -> Seq a |
1116 |
+-lview :: (Monad m) => Seq a -> m (a, Seq a) |
1117 |
++lview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
1118 |
+ lhead :: Seq a -> a |
1119 |
+-lheadM :: (Monad m) => Seq a -> m a |
1120 |
++lheadM :: (Fail.MonadFail m) => Seq a -> m a |
1121 |
+ ltail :: Seq a -> Seq a |
1122 |
+-ltailM :: (Monad m) => Seq a -> m (Seq a) |
1123 |
+-rview :: (Monad m) => Seq a -> m (a, Seq a) |
1124 |
++ltailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
1125 |
++rview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
1126 |
+ rhead :: Seq a -> a |
1127 |
+-rheadM :: (Monad m) => Seq a -> m a |
1128 |
++rheadM :: (Fail.MonadFail m) => Seq a -> m a |
1129 |
+ rtail :: Seq a -> Seq a |
1130 |
+-rtailM :: (Monad m) => Seq a -> m (Seq a) |
1131 |
++rtailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
1132 |
+ null :: Seq a -> Bool |
1133 |
+ size :: Seq a -> Int |
1134 |
+ concat :: Seq (Seq a) -> Seq a |
1135 |
+@@ -103,7 +105,7 @@ reduce1' :: (a -> a -> a) -> Seq a -> a |
1136 |
+ copy :: Int -> a -> Seq a |
1137 |
+ inBounds :: Int -> Seq a -> Bool |
1138 |
+ lookup :: Int -> Seq a -> a |
1139 |
+-lookupM :: (Monad m) => Int -> Seq a -> m a |
1140 |
++lookupM :: (Fail.MonadFail m) => Int -> Seq a -> m a |
1141 |
+ lookupWithDefault :: a -> Int -> Seq a -> a |
1142 |
+ update :: Int -> a -> Seq a -> Seq a |
1143 |
+ adjust :: (a -> a) -> Int -> Seq a -> Seq a |
1144 |
+@@ -246,7 +248,7 @@ inBounds i xs = inb xs i |
1145 |
+ | i < j = (i >= 0) |
1146 |
+ | otherwise = inb xs' (i - j) |
1147 |
+ |
1148 |
+-lookup i xs = runIdentity (lookupM i xs) |
1149 |
++lookup i xs = runFail_ (lookupM i xs) |
1150 |
+ |
1151 |
+ lookupM i xs = look xs i |
1152 |
+ where look E _ = fail "MyersStack.lookup: bad subscript" |
1153 |
+diff --git a/src/Data/Edison/Seq/RandList.hs b/src/Data/Edison/Seq/RandList.hs |
1154 |
+index 8fe97bd..8d2d38b 100644 |
1155 |
+--- a/src/Data/Edison/Seq/RandList.hs |
1156 |
++++ b/src/Data/Edison/Seq/RandList.hs |
1157 |
+@@ -55,8 +55,10 @@ import Prelude hiding (concat,reverse,map,concatMap,foldr,foldl,foldr1,foldl1, |
1158 |
+ |
1159 |
+ import qualified Control.Applicative as App |
1160 |
+ |
1161 |
++import Data.Edison.Prelude ( runFail_ ) |
1162 |
+ import qualified Data.Edison.Seq as S( Sequence(..) ) |
1163 |
+ import Data.Edison.Seq.Defaults |
1164 |
++import qualified Control.Monad.Fail as Fail |
1165 |
+ import Control.Monad.Identity |
1166 |
+ import Data.Monoid |
1167 |
+ import Data.Semigroup as SG |
1168 |
+@@ -69,16 +71,16 @@ singleton :: a -> Seq a |
1169 |
+ lcons :: a -> Seq a -> Seq a |
1170 |
+ rcons :: a -> Seq a -> Seq a |
1171 |
+ append :: Seq a -> Seq a -> Seq a |
1172 |
+-lview :: (Monad m) => Seq a -> m (a, Seq a) |
1173 |
++lview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
1174 |
+ lhead :: Seq a -> a |
1175 |
+-lheadM :: (Monad m) => Seq a -> m a |
1176 |
++lheadM :: (Fail.MonadFail m) => Seq a -> m a |
1177 |
+ ltail :: Seq a -> Seq a |
1178 |
+-ltailM :: (Monad m) => Seq a -> m (Seq a) |
1179 |
+-rview :: (Monad m) => Seq a -> m (a, Seq a) |
1180 |
++ltailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
1181 |
++rview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
1182 |
+ rhead :: Seq a -> a |
1183 |
+-rheadM :: (Monad m) => Seq a -> m a |
1184 |
++rheadM :: (Fail.MonadFail m) => Seq a -> m a |
1185 |
+ rtail :: Seq a -> Seq a |
1186 |
+-rtailM :: (Monad m) => Seq a -> m (Seq a) |
1187 |
++rtailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
1188 |
+ null :: Seq a -> Bool |
1189 |
+ size :: Seq a -> Int |
1190 |
+ concat :: Seq (Seq a) -> Seq a |
1191 |
+@@ -109,7 +111,7 @@ reduce1' :: (a -> a -> a) -> Seq a -> a |
1192 |
+ copy :: Int -> a -> Seq a |
1193 |
+ inBounds :: Int -> Seq a -> Bool |
1194 |
+ lookup :: Int -> Seq a -> a |
1195 |
+-lookupM :: (Monad m) => Int -> Seq a -> m a |
1196 |
++lookupM :: (Fail.MonadFail m) => Int -> Seq a -> m a |
1197 |
+ lookupWithDefault :: a -> Int -> Seq a -> a |
1198 |
+ update :: Int -> a -> Seq a -> Seq a |
1199 |
+ adjust :: (a -> a) -> Int -> Seq a -> Seq a |
1200 |
+@@ -269,7 +271,7 @@ inBounds i xs = inb xs i |
1201 |
+ | i < j = (i >= 0) |
1202 |
+ | otherwise = inb xs (i - j) |
1203 |
+ |
1204 |
+-lookup i xs = runIdentity (lookupM i xs) |
1205 |
++lookup i xs = runFail_ (lookupM i xs) |
1206 |
+ |
1207 |
+ lookupM i xs = look xs i |
1208 |
+ where look E _ = fail "RandList.lookup bad subscript" |
1209 |
+diff --git a/src/Data/Edison/Seq/RevSeq.hs b/src/Data/Edison/Seq/RevSeq.hs |
1210 |
+index 3652c7b..87deea6 100644 |
1211 |
+--- a/src/Data/Edison/Seq/RevSeq.hs |
1212 |
++++ b/src/Data/Edison/Seq/RevSeq.hs |
1213 |
+@@ -62,6 +62,7 @@ import qualified Data.Edison.Seq as S |
1214 |
+ import qualified Data.Edison.Seq.ListSeq as L |
1215 |
+ import Data.Edison.Seq.Defaults -- only used by concatMap |
1216 |
+ import Control.Monad |
1217 |
++import qualified Control.Monad.Fail as Fail |
1218 |
+ import Data.Monoid |
1219 |
+ import Data.Semigroup as SG |
1220 |
+ import Test.QuickCheck |
1221 |
+@@ -75,16 +76,16 @@ singleton :: S.Sequence s => a -> Rev s a |
1222 |
+ lcons :: S.Sequence s => a -> Rev s a -> Rev s a |
1223 |
+ rcons :: S.Sequence s => a -> Rev s a -> Rev s a |
1224 |
+ append :: S.Sequence s => Rev s a -> Rev s a -> Rev s a |
1225 |
+-lview :: (S.Sequence s, Monad m) => Rev s a -> m (a, Rev s a) |
1226 |
++lview :: (S.Sequence s, Fail.MonadFail m) => Rev s a -> m (a, Rev s a) |
1227 |
+ lhead :: S.Sequence s => Rev s a -> a |
1228 |
+-lheadM :: (S.Sequence s, Monad m) => Rev s a -> m a |
1229 |
++lheadM :: (S.Sequence s, Fail.MonadFail m) => Rev s a -> m a |
1230 |
+ ltail :: S.Sequence s => Rev s a -> Rev s a |
1231 |
+-ltailM :: (S.Sequence s, Monad m) => Rev s a -> m (Rev s a) |
1232 |
+-rview :: (S.Sequence s, Monad m) => Rev s a -> m (a, Rev s a) |
1233 |
++ltailM :: (S.Sequence s, Fail.MonadFail m) => Rev s a -> m (Rev s a) |
1234 |
++rview :: (S.Sequence s, Fail.MonadFail m) => Rev s a -> m (a, Rev s a) |
1235 |
+ rhead :: S.Sequence s => Rev s a -> a |
1236 |
+-rheadM :: (S.Sequence s, Monad m) => Rev s a -> m a |
1237 |
++rheadM :: (S.Sequence s, Fail.MonadFail m) => Rev s a -> m a |
1238 |
+ rtail :: S.Sequence s => Rev s a -> Rev s a |
1239 |
+-rtailM :: (S.Sequence s, Monad m) => Rev s a -> m (Rev s a) |
1240 |
++rtailM :: (S.Sequence s, Fail.MonadFail m) => Rev s a -> m (Rev s a) |
1241 |
+ null :: S.Sequence s => Rev s a -> Bool |
1242 |
+ size :: S.Sequence s => Rev s a -> Int |
1243 |
+ concat :: S.Sequence s => Rev s (Rev s a) -> Rev s a |
1244 |
+@@ -115,7 +116,7 @@ reduce1' :: S.Sequence s => (a -> a -> a) -> Rev s a -> a |
1245 |
+ copy :: S.Sequence s => Int -> a -> Rev s a |
1246 |
+ inBounds :: S.Sequence s => Int -> Rev s a -> Bool |
1247 |
+ lookup :: S.Sequence s => Int -> Rev s a -> a |
1248 |
+-lookupM :: (S.Sequence s, Monad m) => Int -> Rev s a -> m a |
1249 |
++lookupM :: (S.Sequence s, Fail.MonadFail m) => Int -> Rev s a -> m a |
1250 |
+ lookupWithDefault :: S.Sequence s => a -> Int -> Rev s a -> a |
1251 |
+ update :: S.Sequence s => Int -> a -> Rev s a -> Rev s a |
1252 |
+ adjust :: S.Sequence s => (a -> a) -> Int -> Rev s a -> Rev s a |
1253 |
+diff --git a/src/Data/Edison/Seq/SimpleQueue.hs b/src/Data/Edison/Seq/SimpleQueue.hs |
1254 |
+index 64592b6..754108f 100644 |
1255 |
+--- a/src/Data/Edison/Seq/SimpleQueue.hs |
1256 |
++++ b/src/Data/Edison/Seq/SimpleQueue.hs |
1257 |
+@@ -59,6 +59,7 @@ import qualified Data.Edison.Seq.ListSeq as L |
1258 |
+ import Data.Monoid |
1259 |
+ import Data.Semigroup as SG |
1260 |
+ import Control.Monad |
1261 |
++import qualified Control.Monad.Fail as Fail |
1262 |
+ import Test.QuickCheck |
1263 |
+ |
1264 |
+ -- signatures for exported functions |
1265 |
+@@ -68,16 +69,16 @@ singleton :: a -> Seq a |
1266 |
+ lcons :: a -> Seq a -> Seq a |
1267 |
+ rcons :: a -> Seq a -> Seq a |
1268 |
+ append :: Seq a -> Seq a -> Seq a |
1269 |
+-lview :: (Monad m) => Seq a -> m (a, Seq a) |
1270 |
++lview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
1271 |
+ lhead :: Seq a -> a |
1272 |
+-lheadM :: (Monad m) => Seq a -> m a |
1273 |
++lheadM :: (Fail.MonadFail m) => Seq a -> m a |
1274 |
+ ltail :: Seq a -> Seq a |
1275 |
+-ltailM :: (Monad m) => Seq a -> m (Seq a) |
1276 |
+-rview :: (Monad m) => Seq a -> m (a, Seq a) |
1277 |
++ltailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
1278 |
++rview :: (Fail.MonadFail m) => Seq a -> m (a, Seq a) |
1279 |
+ rhead :: Seq a -> a |
1280 |
+-rheadM :: (Monad m) => Seq a -> m a |
1281 |
++rheadM :: (Fail.MonadFail m) => Seq a -> m a |
1282 |
+ rtail :: Seq a -> Seq a |
1283 |
+-rtailM :: (Monad m) => Seq a -> m (Seq a) |
1284 |
++rtailM :: (Fail.MonadFail m) => Seq a -> m (Seq a) |
1285 |
+ null :: Seq a -> Bool |
1286 |
+ size :: Seq a -> Int |
1287 |
+ concat :: Seq (Seq a) -> Seq a |
1288 |
+@@ -108,7 +109,7 @@ reduce1' :: (a -> a -> a) -> Seq a -> a |
1289 |
+ copy :: Int -> a -> Seq a |
1290 |
+ inBounds :: Int -> Seq a -> Bool |
1291 |
+ lookup :: Int -> Seq a -> a |
1292 |
+-lookupM :: (Monad m) => Int -> Seq a -> m a |
1293 |
++lookupM :: (Fail.MonadFail m) => Int -> Seq a -> m a |
1294 |
+ lookupWithDefault :: a -> Int -> Seq a -> a |
1295 |
+ update :: Int -> a -> Seq a -> Seq a |
1296 |
+ adjust :: (a -> a) -> Int -> Seq a -> Seq a |
1297 |
+diff --git a/src/Data/Edison/Seq/SizedSeq.hs b/src/Data/Edison/Seq/SizedSeq.hs |
1298 |
+index a50b800..65c0ee9 100644 |
1299 |
+--- a/src/Data/Edison/Seq/SizedSeq.hs |
1300 |
++++ b/src/Data/Edison/Seq/SizedSeq.hs |
1301 |
+@@ -54,6 +54,7 @@ import Data.Edison.Seq.Defaults -- only used by concatMap |
1302 |
+ import Data.Monoid |
1303 |
+ import Data.Semigroup as SG |
1304 |
+ import Control.Monad |
1305 |
++import qualified Control.Monad.Fail as Fail |
1306 |
+ import Test.QuickCheck |
1307 |
+ |
1308 |
+ |
1309 |
+@@ -65,16 +66,16 @@ singleton :: S.Sequence s => a -> Sized s a |
1310 |
+ lcons :: S.Sequence s => a -> Sized s a -> Sized s a |
1311 |
+ rcons :: S.Sequence s => a -> Sized s a -> Sized s a |
1312 |
+ append :: S.Sequence s => Sized s a -> Sized s a -> Sized s a |
1313 |
+-lview :: (S.Sequence s, Monad m) => Sized s a -> m (a, Sized s a) |
1314 |
++lview :: (S.Sequence s, Fail.MonadFail m) => Sized s a -> m (a, Sized s a) |
1315 |
+ lhead :: S.Sequence s => Sized s a -> a |
1316 |
+-lheadM :: (S.Sequence s, Monad m) => Sized s a -> m a |
1317 |
++lheadM :: (S.Sequence s, Fail.MonadFail m) => Sized s a -> m a |
1318 |
+ ltail :: S.Sequence s => Sized s a -> Sized s a |
1319 |
+-ltailM :: (S.Sequence s, Monad m) => Sized s a -> m (Sized s a) |
1320 |
+-rview :: (S.Sequence s, Monad m) => Sized s a -> m (a, Sized s a) |
1321 |
++ltailM :: (S.Sequence s, Fail.MonadFail m) => Sized s a -> m (Sized s a) |
1322 |
++rview :: (S.Sequence s, Fail.MonadFail m) => Sized s a -> m (a, Sized s a) |
1323 |
+ rhead :: S.Sequence s => Sized s a -> a |
1324 |
+-rheadM :: (S.Sequence s, Monad m) => Sized s a -> m a |
1325 |
++rheadM :: (S.Sequence s, Fail.MonadFail m) => Sized s a -> m a |
1326 |
+ rtail :: S.Sequence s => Sized s a -> Sized s a |
1327 |
+-rtailM :: (S.Sequence s, Monad m) => Sized s a -> m (Sized s a) |
1328 |
++rtailM :: (S.Sequence s, Fail.MonadFail m) => Sized s a -> m (Sized s a) |
1329 |
+ null :: S.Sequence s => Sized s a -> Bool |
1330 |
+ size :: S.Sequence s => Sized s a -> Int |
1331 |
+ concat :: S.Sequence s => Sized s (Sized s a) -> Sized s a |
1332 |
+@@ -105,7 +106,7 @@ reduce1' :: S.Sequence s => (a -> a -> a) -> Sized s a -> a |
1333 |
+ copy :: S.Sequence s => Int -> a -> Sized s a |
1334 |
+ inBounds :: S.Sequence s => Int -> Sized s a -> Bool |
1335 |
+ lookup :: S.Sequence s => Int -> Sized s a -> a |
1336 |
+-lookupM :: (S.Sequence s, Monad m) => Int -> Sized s a -> m a |
1337 |
++lookupM :: (S.Sequence s, Fail.MonadFail m) => Int -> Sized s a -> m a |
1338 |
+ lookupWithDefault :: S.Sequence s => a -> Int -> Sized s a -> a |
1339 |
+ update :: S.Sequence s => Int -> a -> Sized s a -> Sized s a |
1340 |
+ adjust :: S.Sequence s => (a -> a) -> Int -> Sized s a -> Sized s a |
1341 |
+ |