ranged-list 0.1.2.0 → 0.1.2.1
raw patch · 5 files changed
+80/−66 lines, 5 filesdep ~typecheck-plugin-nat-simple
Dependency ranges changed: typecheck-plugin-nat-simple
Files
- ranged-list.cabal +5/−7
- src/Data/List/Range.hs +24/−19
- src/Data/List/Range/Nat.hs +2/−2
- src/Data/List/Range/RangeL.hs +29/−19
- src/Data/List/Range/RangeR.hs +20/−19
ranged-list.cabal view
@@ -1,13 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.34.4.+-- This file has been generated from package.yaml by hpack version 0.35.0. -- -- see: https://github.com/sol/hpack------ hash: a22ce50d50583c3a0ac25b09f771d7f4456aa22f8154625866fdb128f05eb4b9 name: ranged-list-version: 0.1.2.0+version: 0.1.2.1 synopsis: The list like structure whose length or range of length can be specified description: Please see the README on GitHub at <https://github.com/YoshikuniJujo/ranged-list#readme> category: List@@ -52,7 +50,7 @@ src build-depends: base >=4.7 && <5- , typecheck-plugin-nat-simple+ , typecheck-plugin-nat-simple >=0.1.0.9 default-language: Haskell2010 test-suite ranged-list-doctest@@ -67,7 +65,7 @@ base >=4.7 && <5 , doctest , ranged-list- , typecheck-plugin-nat-simple+ , typecheck-plugin-nat-simple >=0.1.0.9 default-language: Haskell2010 test-suite ranged-list-test@@ -81,5 +79,5 @@ build-depends: base >=4.7 && <5 , ranged-list- , typecheck-plugin-nat-simple+ , typecheck-plugin-nat-simple >=0.1.0.9 default-language: Haskell2010
src/Data/List/Range.hs view
@@ -59,7 +59,7 @@ -- MIN -repeatLMin :: (LoosenLMax n n m, Unfoldr 0 n n) => a -> RangeL n m a+repeatLMin :: (0 <= n, LoosenLMax n n m, Unfoldr 0 n n) => a -> RangeL n m a repeatLMin = unfoldrMin \x -> (x, x) {-^@@ -73,7 +73,7 @@ -} unfoldrMin ::- (LoosenLMax n n m, Unfoldr 0 n n) => (s -> (a, s)) -> s -> RangeL n m a+ (0 <= n, LoosenLMax n n m, Unfoldr 0 n n) => (s -> (a, s)) -> s -> RangeL n m a unfoldrMin f = loosenLMax . unfoldr f {-^@@ -88,7 +88,7 @@ -} unfoldrMMin ::- (Monad m, LoosenLMax n n w, Unfoldr 0 n n) => m a -> m (RangeL n w a)+ (0 <= n, Monad m, LoosenLMax n n w, Unfoldr 0 n n) => m a -> m (RangeL n w a) unfoldrMMin f = loosenLMax <$> unfoldrM f {-^@@ -106,7 +106,7 @@ -- MAX -repeatLMax :: (LoosenLMin m m n, Unfoldr 0 m m) => a -> RangeL n m a+repeatLMax :: (0 <= m, LoosenLMin m m n, Unfoldr 0 m m) => a -> RangeL n m a repeatLMax = unfoldrMax \x -> (x, x) {-^@@ -120,7 +120,7 @@ -} unfoldrMax ::- (LoosenLMin m m n, Unfoldr 0 m m) => (s -> (a, s)) -> s -> RangeL n m a+ (0 <= m, LoosenLMin m m n, Unfoldr 0 m m) => (s -> (a, s)) -> s -> RangeL n m a unfoldrMax f = loosenLMin . unfoldr f {-^@@ -135,7 +135,7 @@ -} unfoldrMMax ::- (Monad m, LoosenLMin w w n, Unfoldr 0 w w) => m a -> m (RangeL n w a)+ (0 <= w, Monad m, LoosenLMin w w n, Unfoldr 0 w w) => m a -> m (RangeL n w a) unfoldrMMax f = loosenLMin <$> unfoldrM f {-^@@ -157,7 +157,7 @@ -- MIN -repeatRMin :: (LoosenRMax n n m, Unfoldl 0 n n) => a -> RangeR n m a+repeatRMin :: (0 <= n, LoosenRMax n n m, Unfoldl 0 n n) => a -> RangeR n m a repeatRMin = unfoldlMin \x -> (x, x) {-^@@ -171,7 +171,7 @@ -} unfoldlMin ::- (LoosenRMax n n m, Unfoldl 0 n n) => (s -> (s, a)) -> s -> RangeR n m a+ (0 <= n, LoosenRMax n n m, Unfoldl 0 n n) => (s -> (s, a)) -> s -> RangeR n m a unfoldlMin f = loosenRMax . unfoldl f {-^@@ -186,7 +186,7 @@ -} unfoldlMMin ::- (Monad m, LoosenRMax n n w, Unfoldl 0 n n) => m a -> m (RangeR n w a)+ (0 <= n, Monad m, LoosenRMax n n w, Unfoldl 0 n n) => m a -> m (RangeR n w a) unfoldlMMin f = loosenRMax <$> unfoldlM f {-^@@ -204,7 +204,7 @@ -- MAX -repeatRMax :: (LoosenRMin m m n, Unfoldl 0 m m) => a -> RangeR n m a+repeatRMax :: (0 <= m, LoosenRMin m m n, Unfoldl 0 m m) => a -> RangeR n m a repeatRMax = unfoldlMax \x -> (x, x) {-^@@ -218,7 +218,7 @@ -} unfoldlMax ::- (LoosenRMin m m n, Unfoldl 0 m m) => (s -> (s, a)) -> s -> RangeR n m a+ (0 <= m, LoosenRMin m m n, Unfoldl 0 m m) => (s -> (s, a)) -> s -> RangeR n m a unfoldlMax f = loosenRMin . unfoldl f {-^@@ -233,7 +233,7 @@ -} unfoldlMMax ::- (Monad m, LoosenRMin w w n, Unfoldl 0 w w) => m a -> m (RangeR n w a)+ (0 <= w, Monad m, LoosenRMin w w n, Unfoldl 0 w w) => m a -> m (RangeR n w a) unfoldlMMax f = loosenRMin <$> unfoldlM f {-^@@ -279,12 +279,14 @@ instance LeftToRight n m 0 0 where n ++.+ _ = n instance {-# OVERLAPPABLE #-} (- 1 <= n, PushR (n - 1) (m - 1), LoosenRMax n m (m + w),+ 1 <= n, 1 <= m + 1, PushR (n - 1) m, LoosenRMax n m (m + w), LeftToRight n (m + 1) 0 (w - 1) ) => LeftToRight n m 0 w where- (++.+) n = \case NilL -> loosenRMax n; x :.. v -> n .:++ x ++.+ v+ (++.+) :: forall a . RangeR n m a -> RangeL 0 w a -> RangeR n (m + w) a+ (++.+) n = \case NilL -> loosenRMax n; x :.. v -> (n .:++ x :: RangeR n (m + 1) a) ++.+ v -instance {-# OVERLAPPABLE #-}- (1 <= v, LeftToRight (n + 1) (m + 1) (v - 1) (w - 1)) =>+instance {-# OVERLAPPABLE #-} (+ 1 <= n + 1, 1 <= m + 1, 1 <= v,+ LeftToRight (n + 1) (m + 1) (v - 1) (w - 1)) => LeftToRight n m v w where (++.+) :: forall a . RangeR n m a -> RangeL v w a -> RangeR (n + v) (m + w) a@@ -339,12 +341,15 @@ instance RightToLeft 0 0 v w where _ ++.. v = v instance {-# OVERLAPPABLE #-} (- 1 <= v, PushL (v - 1) (w - 1), LoosenLMax v w (m + w),+ 1 <= v, 1 <= w + 1, PushL (v - 1) w, LoosenLMax v w (m + w), RightToLeft 0 (m - 1) v (w + 1) ) => RightToLeft 0 m v w where- (++..) = \case NilR -> loosenLMax; n :++ x -> (n ++..) . (x .:..)+ (++..) :: forall a . RangeR 0 m a -> RangeL v w a -> RangeL v (m + w) a+ NilR ++.. l = loosenLMax l+ (n :++ x) ++.. l = n ++.. (x .:.. l :: RangeL v (w + 1) a) instance {-# OVERLAPPABLE #-} (- 1 <= n, RightToLeft (n - 1) (m - 1) (v + 1) (w + 1) ) =>+ 1 <= n, 1 <= v + 1, 1 <= w + 1,+ RightToLeft (n - 1) (m - 1) (v + 1) (w + 1) ) => RightToLeft n m v w where (++..) :: forall a . RangeR n m a -> RangeL v w a -> RangeL (n + v) (m + w) a
src/Data/List/Range/Nat.hs view
@@ -58,7 +58,7 @@ -} -fromIntL :: Unfoldr 0 n m => Int -> Maybe (RangedNatL n m)+fromIntL :: (0 <= m, Unfoldr 0 n m) => Int -> Maybe (RangedNatL n m) fromIntL = unfoldrRangeMaybe \s -> bool Nothing (Just ((), s - 1)) (s > 0) {-^@@ -123,7 +123,7 @@ -} -fromIntR :: Unfoldl 0 n m => Int -> Maybe (RangedNatR n m)+fromIntR :: (0 <= m, Unfoldl 0 n m) => Int -> Maybe (RangedNatR n m) fromIntR = unfoldlRangeMaybe \s -> bool Nothing (Just (s - 1, ())) (s > 0) {-^
src/Data/List/Range/RangeL.hs view
@@ -152,30 +152,39 @@ instance Applicative (LengthL 0) where pure _ = NilL; _ <*> _ = NilL -instance {-# OVERLAPPABLE #-} (Functor (RangeL 0 m), Applicative (RangeL 0 (m - 1)), Unfoldr 0 0 m) => Applicative (RangeL 0 m) where+instance {-# OVERLAPPABLE #-} (+ 0 <= m,+ Functor (RangeL 0 m), Applicative (RangeL 0 (m - 1)), Unfoldr 0 0 m) =>+ Applicative (RangeL 0 m) where pure = unfoldrRange (const True) (\x -> (x, x)) NilL <*> _ = NilL _ <*> NilL = NilL f :.. fs <*> x :.. xs = f x :.. (fs <*> xs) -instance {-# OVERLAPPABLE #-} (1 <= n, Functor (RangeL n m), Applicative (RangeL (n - 1) (m - 1)), Unfoldr 0 n m) => Applicative (RangeL n m) where+instance {-# OVERLAPPABLE #-} (+ 1 <= n, 0 <= m,+ Functor (RangeL n m), Applicative (RangeL (n - 1) (m - 1)),+ Unfoldr 0 n m) =>+ Applicative (RangeL n m) where pure = unfoldrRange (const True) (\x -> (x, x)) f :. fs <*> x :. xs = f x :. (fs <*> xs) instance Applicative (LengthL 0) => Monad (LengthL 0) where NilL >>= _ = NilL -instance {-# OVERLAPPABLE #-} (1 <= n, Applicative (LengthL n), Monad (LengthL (n - 1))) => Monad (LengthL n) where+instance {-# OVERLAPPABLE #-} (+ 1 <= n, Applicative (LengthL n), Monad (LengthL (n - 1)) ) =>+ Monad (LengthL n) where x :. xs >>= f = y :. (xs >>= \z -> case f z of _ :. zs -> zs) where y :. _ = f x -- INSTANCE ISSTRING -instance Unfoldr 0 n m => IsString (RangeL n m Char) where+instance (0 <= m, Unfoldr 0 n m) => IsString (RangeL n m Char) where fromString s = fromMaybe (error $ "The string " ++ show s ++ " is not within range.") $ unfoldrRangeMaybe (\case "" -> Nothing; c : cs -> Just (c, cs)) s -instance (Foldable (RangeL n m), Unfoldr 0 n m) => IsList (RangeL n m a) where+instance (0 <= m, Foldable (RangeL n m), Unfoldr 0 n m) => IsList (RangeL n m a) where type Item (RangeL n m a) = a fromList lst = fromMaybe (error $ "The list is not within range.") $ unfoldrRangeMaybe (\case [] -> Nothing; x : xs -> Just (x, xs)) lst@@ -188,7 +197,7 @@ infixr 5 .:.. class PushL n m where- (.:..) :: a -> RangeL n m a -> RangeL n (m + 1) a+ (.:..) :: a -> RangeL n (m - 1) a -> RangeL n m a {-^ @@ -203,10 +212,9 @@ -} -instance PushL 0 m where- (.:..) x = \case NilL -> x :.. NilL; xs@(_ :.. _) -> x :.. xs+instance 1 <= m => PushL 0 m where (.:..) = (:..) -instance {-# OVERLAPPABLE #-} (1 <= n, PushL (n - 1) (m - 1)) => PushL n m where+instance {-# OVERLAPPABLE #-} (1 <= n, 1 <= m, PushL (n - 1) (m - 1)) => PushL n m where x .:.. y :. ys = x :. (y .:.. ys) ---------------------------------------------------------------------------@@ -236,14 +244,15 @@ instance AddL 0 0 v w where NilL ++. ys = ys instance {-# OVERLAPPABLE #-}- (PushL v (m + w - 1), AddL 0 (m - 1) v w, LoosenLMax v w (m + w)) =>+ (PushL v (m + w), AddL 0 (m - 1) v w, LoosenLMax v w (m + w)) => AddL 0 m v w where (++.) :: forall a . RangeL 0 m a -> RangeL v w a -> RangeL v (m + w) a NilL ++. ys = loosenLMax ys x :.. xs ++. ys = x .:.. (xs ++. ys :: RangeL v (m + w - 1) a) instance {-# OVERLAPPABLE #-}- (1 <= n, AddL (n - 1) (m - 1) v w) => AddL n m v w where+ (1 <= n, 1 <= n + v, 1 <= m + w, AddL (n - 1) (m - 1) v w) =>+ AddL n m v w where x :. xs ++. ys = x :. (xs ++. ys) ---------------------------------------------------------------------------@@ -317,10 +326,10 @@ -} -instance LoosenLMax 0 0 w where loosenLMax NilL = NilL+instance 0 <= w => LoosenLMax 0 0 w where loosenLMax NilL = NilL instance {-# OVERLAPPABLE #-}- (1 <= w, LoosenLMax 0 (m - 1) (w - 1)) => LoosenLMax 0 m w where+ (0 <= w, 1 <= w, LoosenLMax 0 (m - 1) (w - 1)) => LoosenLMax 0 m w where loosenLMax = \case NilL -> NilL; (x :.. xs) -> x :.. loosenLMax xs instance {-# OVERLAPPABLE #-}@@ -380,7 +389,8 @@ unfoldrMRangeWithBase NilL _ _ = pure NilL unfoldrMRangeMaybeWithBase NilL p _ = bool (Just NilL) Nothing <$> p -instance {-# OVERLAPPABLE #-} (1 <= w, Unfoldr 0 0 (w - 1)) => Unfoldr 0 0 w where+instance {-# OVERLAPPABLE #-} (0 <= w - 1, 1 <= w, Unfoldr 0 0 (w - 1)) =>+ Unfoldr 0 0 w where unfoldrMRangeWithBase NilL p f = (p >>=) . bool (pure NilL) $ f >>= \x -> (x :..) <$> unfoldrMRangeWithBase NilL p f@@ -394,7 +404,7 @@ ((x :..) <$>) <$> unfoldrMRangeMaybeWithBase xs p f instance {-# OVERLAPPABLE #-}- (1 <= v, 1 <= w, Unfoldr 0 (v - 1) (w - 1)) => Unfoldr 0 v w where+ (1 <= v, 0 <= w - 1, 1 <= w, Unfoldr 0 (v - 1) (w - 1)) => Unfoldr 0 v w where unfoldrMRangeWithBase NilL p f = f >>= \x -> (x :.) <$> unfoldrMRangeWithBase NilL p f unfoldrMRangeWithBase (x :.. xs) p f =@@ -416,7 +426,7 @@ -- UNFOLDR RANGE -unfoldrRange :: Unfoldr 0 v w =>+unfoldrRange :: (0 <= w, Unfoldr 0 v w) => (s -> Bool) -> (s -> (a, s)) -> s -> RangeL v w a unfoldrRange = unfoldrRangeWithBase NilL @@ -473,7 +483,7 @@ -} -unfoldrMRange :: (Unfoldr 0 v w, Monad m) => m Bool -> m a -> m (RangeL v w a)+unfoldrMRange :: (0 <= w, Unfoldr 0 v w, Monad m) => m Bool -> m a -> m (RangeL v w a) unfoldrMRange = unfoldrMRangeWithBase NilL {-^@@ -491,7 +501,7 @@ -- UNFOLDR RANGE MAYBE -unfoldrRangeMaybe :: Unfoldr 0 v w =>+unfoldrRangeMaybe :: (0 <= w, Unfoldr 0 v w) => (s -> Maybe (a, s)) -> s -> Maybe (RangeL v w a) unfoldrRangeMaybe = unfoldrRangeMaybeWithBase NilL @@ -541,7 +551,7 @@ unfoldrRangeMaybeWithBaseGen xs p f = runStateL $ unfoldrMRangeMaybeWithBase xs (StateL p) (StateL f) -unfoldrMRangeMaybe :: (Unfoldr 0 v w, Monad m) =>+unfoldrMRangeMaybe :: (0 <= w, Unfoldr 0 v w, Monad m) => m Bool -> m a -> m (Maybe (RangeL v w a)) unfoldrMRangeMaybe = unfoldrMRangeMaybeWithBase NilL
src/Data/List/Range/RangeR.hs view
@@ -139,17 +139,17 @@ instance Applicative (RangeR 0 0) where pure _ = NilR; _ <*> _ = NilR -instance {-# OVERLAPPABLE #-} (1 <= n, Functor (RangeR n n), Applicative (RangeR (n - 1) (n - 1)), Unfoldl 0 n n) => Applicative (RangeR n n) where+instance {-# OVERLAPPABLE #-} (0 <= n, 1 <= n, Functor (RangeR n n), Applicative (RangeR (n - 1) (n - 1)), Unfoldl 0 n n) => Applicative (RangeR n n) where pure = unfoldlRange (const True) (\x -> (x, x)) fs :+ f <*> xs :+ x = (fs <*> xs) :+ f x -instance {-# OVERLAPPABLE #-} (Functor (RangeR 0 m), Applicative (RangeR 0 (m - 1)), Unfoldl 0 0 m) => Applicative (RangeR 0 m) where+instance {-# OVERLAPPABLE #-} (0 <= m, Functor (RangeR 0 m), Applicative (RangeR 0 (m - 1)), Unfoldl 0 0 m) => Applicative (RangeR 0 m) where pure = unfoldlRange (const True) (\x -> (x, x)) NilR <*> _ = NilR _ <*> NilR = NilR fs :++ f <*> xs :++ x = (fs <*> xs) :++ f x -instance {-# OVERLAPPABLE #-} (1 <= n, Functor (RangeR n m), Applicative (RangeR (n - 1) (m - 1)), Unfoldl 0 n m) => Applicative (RangeR n m) where+instance {-# OVERLAPPABLE #-} (0 <= m, 1 <= n, Functor (RangeR n m), Applicative (RangeR (n - 1) (m - 1)), Unfoldl 0 n m) => Applicative (RangeR n m) where pure = unfoldlRange (const True) (\x -> (x, x)) fs :+ f <*> xs :+ x = (fs <*> xs) :+ f x @@ -162,11 +162,11 @@ -- INSTANCE ISSTRING -instance Unfoldl 0 n m => IsString (RangeR n m Char) where+instance (0 <= m, Unfoldl 0 n m) => IsString (RangeR n m Char) where fromString s = fromMaybe (error $ "The string " ++ show s ++ " is not within range.") . unfoldlRangeMaybe (\case "" -> Nothing; c : cs -> Just (cs, c)) $ reverse s -instance (Foldable (RangeR n m), Unfoldl 0 n m) => IsList (RangeR n m a) where+instance (0 <= m, Foldable (RangeR n m), Unfoldl 0 n m) => IsList (RangeR n m a) where type Item (RangeR n m a) = a fromList lst = fromMaybe (error $ "The list is not within range.") . unfoldlRangeMaybe (\case [] -> Nothing; x : xs -> Just (xs, x)) $ reverse lst@@ -179,7 +179,7 @@ infixl 5 .:++ class PushR n m where- (.:++) :: RangeR n m a -> a -> RangeR n (m + 1) a+ (.:++) :: RangeR n (m - 1) a -> a -> RangeR n m a {-^ @@ -194,10 +194,10 @@ -} -instance PushR 0 m where+instance 1 <= m => PushR 0 m where (.:++) = \case NilR -> (NilR :++); xs@(_ :++ _) -> (xs :++) -instance {-# OVERLAPPABLE #-} (1 <= n, PushR (n - 1) (m - 1)) => PushR n m where+instance {-# OVERLAPPABLE #-} (1 <= m, 1 <= n, PushR (n - 1) (m - 1)) => PushR n m where xs :+ x .:++ y = (xs .:++ x) :+ y ---------------------------------------------------------------------------@@ -226,15 +226,16 @@ instance AddR n m 0 0 where xs +++ NilR = xs instance {-# OVERLAPPABLE #-}- (PushR n (m + w - 1), AddR n m 0 (w - 1), LoosenRMax n m (m + w)) =>+ (1 <= n, PushR n (m + w), AddR n m 0 (w - 1), LoosenRMax n m (m + w)) => AddR n m 0 w where (+++) :: forall a . RangeR n m a -> RangeR 0 w a -> RangeR n (m + w) a (+++) xs = \case NilR -> loosenRMax xs ys :++ y -> (xs +++ ys :: RangeR n (m + w - 1) a) .:++ y -instance {-# OVERLAPPABLE #-}- (1 <= v, AddR n m (v - 1) (w - 1)) => AddR n m v w where+instance {-# OVERLAPPABLE #-} (+ 1 <= v, 1 <= n + v, 1 <= m + w, AddR n m (v - 1) (w - 1) ) =>+ AddR n m v w where xs +++ ys :+ y = (xs +++ ys) :+ y ---------------------------------------------------------------------------@@ -308,10 +309,10 @@ -} -instance LoosenRMax 0 0 m where loosenRMax NilR = NilR+instance 0 <= m => LoosenRMax 0 0 m where loosenRMax NilR = NilR instance {-# OVERLAPPABLE #-}- (1 <= w, LoosenRMax 0 (m - 1) (w - 1)) => LoosenRMax 0 m w where+ (0 <= w, 1 <= w, LoosenRMax 0 (m - 1) (w - 1)) => LoosenRMax 0 m w where loosenRMax = \case NilR -> NilR; xs :++ x -> loosenRMax xs :++ x instance {-# OVERLAPPABLE #-}@@ -372,7 +373,7 @@ unfoldlMRangeWithBase _ _ NilR = pure NilR unfoldlMRangeMaybeWithBase p _ NilR = bool (Just NilR) Nothing <$> p -instance {-# OVERLAPPABLE #-} (1 <= w, Unfoldl 0 0 (w - 1)) => Unfoldl 0 0 w where+instance {-# OVERLAPPABLE #-} (0 <= w - 1, 1 <= w, Unfoldl 0 0 (w - 1)) => Unfoldl 0 0 w where unfoldlMRangeWithBase p f = \case NilR -> (p >>=) . bool (pure NilR) $ f >>= \x -> (:++ x) <$> unfoldlMRangeWithBase p f NilR@@ -383,7 +384,7 @@ ((:++ x) <$>) <$> unfoldlMRangeMaybeWithBase p f NilR xs :++ x -> ((:++ x) <$>) <$> unfoldlMRangeMaybeWithBase p f xs -instance {-# OVERLAPPABLE #-} (1 <= v, 1 <= w, Unfoldl 0 (v - 1) (w - 1)) => Unfoldl 0 v w where+instance {-# OVERLAPPABLE #-} (1 <= v, 0 <= w - 1, 1 <= w, Unfoldl 0 (v - 1) (w - 1)) => Unfoldl 0 v w where unfoldlMRangeWithBase p f = \case NilR -> f >>= \x -> (:+ x) <$> unfoldlMRangeWithBase p f NilR xs :++ x -> (:+ x) <$> unfoldlMRangeWithBase p f xs@@ -403,7 +404,7 @@ -- UNFOLDL RANGE -unfoldlRange :: Unfoldl 0 v w =>+unfoldlRange :: (0 <= w, Unfoldl 0 v w) => (s -> Bool) -> (s -> (s, a)) -> s -> RangeR v w a unfoldlRange p f s = unfoldlRangeWithBase p f s NilR @@ -461,7 +462,7 @@ -} -unfoldlMRange :: (Unfoldl 0 v w, Monad m) => m Bool -> m a -> m (RangeR v w a)+unfoldlMRange :: (0 <= w, Unfoldl 0 v w, Monad m) => m Bool -> m a -> m (RangeR v w a) unfoldlMRange p f = unfoldlMRangeWithBase p f NilR {-^@@ -480,7 +481,7 @@ -- UNFOLDL RANGE MAYBE unfoldlRangeMaybe ::- Unfoldl 0 v w => (s -> Maybe (s, a)) -> s -> Maybe (RangeR v w a)+ (0 <= w, Unfoldl 0 v w) => (s -> Maybe (s, a)) -> s -> Maybe (RangeR v w a) unfoldlRangeMaybe f s = unfoldlRangeMaybeWithBase f s NilR {-^@@ -530,7 +531,7 @@ unfoldlRangeMaybeWithBaseGen p f = runStateR . unfoldlMRangeMaybeWithBase (StateR p) (StateR f) -unfoldlMRangeMaybe :: (Unfoldl 0 v w, Monad m) =>+unfoldlMRangeMaybe :: (0 <= w, Unfoldl 0 v w, Monad m) => m Bool -> m a -> m (Maybe (RangeR v w a)) unfoldlMRangeMaybe p f = unfoldlMRangeMaybeWithBase p f NilR