packages feed

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 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