packages feed

ranged-list 0.1.0.0 → 0.1.0.1

raw patch · 8 files changed

+35/−29 lines, 8 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.List.Range: instance (Data.List.Range.RangeL.PushL (v GHC.TypeNats.- 1) (w GHC.TypeNats.- 1), Data.List.Range.RangeL.LoosenLMax v w (m GHC.TypeNats.+ w), Data.List.Range.RightToLeft 0 (m GHC.TypeNats.- 1) v (w GHC.TypeNats.+ 1)) => Data.List.Range.RightToLeft 0 m v w
- Data.List.Range: instance (Data.List.Range.RangeR.PushR (n GHC.TypeNats.- 1) (m GHC.TypeNats.- 1), Data.List.Range.RangeR.LoosenRMax n m (m GHC.TypeNats.+ w), Data.List.Range.LeftToRight n (m GHC.TypeNats.+ 1) 0 (w GHC.TypeNats.- 1)) => Data.List.Range.LeftToRight n m 0 w
+ Data.List.Range: instance (1 GHC.TypeNats.<= n, Data.List.Range.RangeR.PushR (n GHC.TypeNats.- 1) (m GHC.TypeNats.- 1), Data.List.Range.RangeR.LoosenRMax n m (m GHC.TypeNats.+ w), Data.List.Range.LeftToRight n (m GHC.TypeNats.+ 1) 0 (w GHC.TypeNats.- 1)) => Data.List.Range.LeftToRight n m 0 w
+ Data.List.Range: instance (1 GHC.TypeNats.<= v, Data.List.Range.RangeL.PushL (v GHC.TypeNats.- 1) (w GHC.TypeNats.- 1), Data.List.Range.RangeL.LoosenLMax v w (m GHC.TypeNats.+ w), Data.List.Range.RightToLeft 0 (m GHC.TypeNats.- 1) v (w GHC.TypeNats.+ 1)) => Data.List.Range.RightToLeft 0 m v w
- Data.List.Length: repeatL :: Unfoldr 0 n n => a -> LengthL n a
+ Data.List.Length: repeatL :: (0 <= n, Unfoldr 0 n n) => a -> LengthL n a
- Data.List.Length: repeatR :: Unfoldl 0 n n => a -> LengthR n a
+ Data.List.Length: repeatR :: (0 <= n, Unfoldl 0 n n) => a -> LengthR n a
- Data.List.Length: unfoldl :: Unfoldl 0 n n => (s -> (s, a)) -> s -> LengthR n a
+ Data.List.Length: unfoldl :: (0 <= n, Unfoldl 0 n n) => (s -> (s, a)) -> s -> LengthR n a
- Data.List.Length: unfoldlM :: (Monad m, Unfoldl 0 n n) => m a -> m (LengthR n a)
+ Data.List.Length: unfoldlM :: (Monad m, 0 <= n, Unfoldl 0 n n) => m a -> m (LengthR n a)
- Data.List.Length: unfoldr :: Unfoldr 0 n n => (s -> (a, s)) -> s -> LengthL n a
+ Data.List.Length: unfoldr :: (0 <= n, Unfoldr 0 n n) => (s -> (a, s)) -> s -> LengthL n a
- Data.List.Length: unfoldrM :: (Monad m, Unfoldr 0 n n) => m a -> m (LengthL n a)
+ Data.List.Length: unfoldrM :: (Monad m, 0 <= n, Unfoldr 0 n n) => m a -> m (LengthL n a)
- Data.List.Range.Nat: natL :: Unfoldr 0 n n => RangedNatL n n
+ Data.List.Range.Nat: natL :: (0 <= n, Unfoldr 0 n n) => RangedNatL n n
- Data.List.Range.Nat: natR :: Unfoldl 0 n n => RangedNatR n n
+ Data.List.Range.Nat: natR :: (0 <= n, Unfoldl 0 n n) => RangedNatR n n

Files

ranged-list.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.33.0.+-- This file has been generated from package.yaml by hpack version 0.34.4. -- -- see: https://github.com/sol/hpack ----- hash: 42c7def6fb4ed75b8b978a1de4cdf116653323fb1cee0e251bceaa00ef7be780+-- hash: 349e85c819f827a30071512b7dc4e2e3b2add699054a5d970f833e60ce71577d  name:           ranged-list-version:        0.1.0.0+version:        0.1.0.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
src/Data/List/Length.hs view
@@ -57,6 +57,8 @@ 	LengthR, unfoldl, unfoldlWithBase, unfoldlM, unfoldlMWithBase, 	ListToLengthR, listToLengthR ) +import GHC.TypeNats+ ---------------------------------------------------------------------------  -- LENGTH LEFT@@ -66,7 +68,7 @@ -- LENGTH LEFT --------------------------------------------------------------------------- -repeatL :: Unfoldr 0 n n => a -> LengthL n a+repeatL :: (0 <= n, Unfoldr 0 n n) => a -> LengthL n a repeatL = fillL NilL  {-^@@ -128,7 +130,7 @@ -- LENGTH RIGHT --------------------------------------------------------------------------- -repeatR :: Unfoldl 0 n n => a -> LengthR n a+repeatR :: (0 <= n, Unfoldl 0 n n) => a -> LengthR n a repeatR = (`fillR` NilR)  {-^
src/Data/List/Length/LengthL.hs view
@@ -27,7 +27,7 @@ -- UNFOLDR --------------------------------------------------------------------------- -unfoldr :: Unfoldr 0 n n => (s -> (a, s)) -> s -> LengthL n a+unfoldr :: (0 <= n, Unfoldr 0 n n) => (s -> (a, s)) -> s -> LengthL n a unfoldr = unfoldrWithBase NilL  {-^@@ -56,7 +56,7 @@  -} -unfoldrM :: (Monad m, Unfoldr 0 n n) => m a -> m (LengthL n a)+unfoldrM :: (Monad m, 0 <= n, Unfoldr 0 n n) => m a -> m (LengthL n a) unfoldrM = unfoldrMWithBase NilL  {-^@@ -114,7 +114,7 @@ 	splitL = \case [] -> Left NilL; x : xs -> Right (x :. NilL, xs)  instance {-# OVERLAPPABLE #-}-	(1 <= n, 1 <= (n - 1), ListToLengthL (n - 1)) => ListToLengthL n where+	(1 <= n, 1 <= (n - 1), 0 <= (n - 1), ListToLengthL (n - 1)) => ListToLengthL n where 	splitL = \case 		[] -> Left NilL 		x : xs -> (x :..) +++ ((x :.) `first`) $ splitL xs
src/Data/List/Length/LengthR.hs view
@@ -39,7 +39,7 @@ -- UNFOLDL --------------------------------------------------------------------------- -unfoldl :: Unfoldl 0 n n => (s -> (s, a)) -> s -> LengthR n a+unfoldl :: (0 <= n, Unfoldl 0 n n) => (s -> (s, a)) -> s -> LengthR n a unfoldl f s = unfoldlWithBase f s NilR  {-^@@ -68,7 +68,7 @@  -} -unfoldlM :: (Monad m, Unfoldl 0 n n) => m a -> m (LengthR n a)+unfoldlM :: (Monad m, 0 <= n, Unfoldl 0 n n) => m a -> m (LengthR n a) unfoldlM = (`unfoldlMWithBase` NilR)  {-^@@ -125,7 +125,7 @@ 	listToLengthR = \case [] -> Left NilR; x : xs -> Right (NilR :+ x, xs)  instance {-# OVERLAPPABLE #-}-	(1 <= n, 1 <= (n - 1), ListToLengthR (n - 1)) => ListToLengthR n where+	(1 <= n, 1 <= (n - 1), 0 <= (n - 1), ListToLengthR (n - 1)) => ListToLengthR n where 	listToLengthR = \case 		[] -> Left NilR 		x : xs -> (:++ x) +++ ((:+ x) `first`) $ listToLengthR xs
src/Data/List/Range.hs view
@@ -279,7 +279,7 @@ instance LeftToRight n m 0 0 where n ++.+ _ = n  instance {-# OVERLAPPABLE #-} (-	PushR (n - 1) (m - 1), LoosenRMax n m (m + w),+	1 <= n, PushR (n - 1) (m - 1), 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 @@ -339,7 +339,7 @@ instance RightToLeft 0 0 v w where _ ++.. v = v  instance {-# OVERLAPPABLE #-} (-	PushL (v - 1) (w - 1), LoosenLMax v w (m + w),+	1 <= v, PushL (v - 1) (w - 1), 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 .:..) 
src/Data/List/Range/Nat.hs view
@@ -3,6 +3,8 @@ {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} +{-# LANGUAGE GADTs #-}+ module Data.List.Range.Nat ( 	-- * RangedNatL 	RangedNatL, natL, toIntL, fromIntL, splitAtL,@@ -16,6 +18,8 @@ 	RangeL, Unfoldr, unfoldrRangeMaybe, ZipL, zipWithL, 	RangeR, Unfoldl, unfoldlRangeMaybe, ZipR, zipWithR ) +import GHC.TypeNats+ ---------------------------------------------------------------------------  -- * RANGED NAT LEFT@@ -27,7 +31,7 @@  type RangedNatL n m = RangeL n m () -natL :: Unfoldr 0 n n => RangedNatL n n+natL :: (0 <= n, Unfoldr 0 n n) => RangedNatL n n natL = repeatL ()  {-^@@ -92,7 +96,7 @@  type RangedNatR n m = RangeR n m () -natR :: Unfoldl 0 n n => RangedNatR n n+natR :: (0 <= n, Unfoldl 0 n n) => RangedNatR n n natR = repeatR ()  {-^
src/Data/List/Range/RangeL.hs view
@@ -276,7 +276,7 @@ 	loosenLMin (x :. xs) = x :.. loosenLMin xs 	 instance {-# OVERLAPPABLE #-}-	(1 <= n, LoosenLMin (n - 1) (m - 1) (v - 1)) => LoosenLMin n m v where+	(1 <= n, 1 <= v, LoosenLMin (n - 1) (m - 1) (v - 1)) => LoosenLMin n m v where 	loosenLMin (x :. xs) = x :. loosenLMin xs  -- LOOSEN LEFT MAX@@ -302,11 +302,11 @@ instance LoosenLMax 0 0 w where loosenLMax NilL = NilL  instance {-# OVERLAPPABLE #-}-	LoosenLMax 0 (m - 1) (w - 1) => LoosenLMax 0 m w where+	(1 <= w, LoosenLMax 0 (m - 1) (w - 1)) => LoosenLMax 0 m w where 	loosenLMax = \case NilL -> NilL; (x :.. xs) -> x :.. loosenLMax xs  instance {-# OVERLAPPABLE #-}-	(1 <= n, LoosenLMax (n - 1) (m - 1) (w - 1)) => LoosenLMax n m w where+	(1 <= n, 1 <= w, LoosenLMax (n - 1) (m - 1) (w - 1)) => LoosenLMax n m w where 	loosenLMax (x :. xs) = x :. loosenLMax xs  ---------------------------------------------------------------------------@@ -362,7 +362,7 @@ 	unfoldrMRangeWithBase NilL _ _ = pure NilL 	unfoldrMRangeMaybeWithBase NilL p _ = bool (Just NilL) Nothing <$> p -instance {-# OVERLAPPABLE #-} Unfoldr 0 0 (w - 1) => Unfoldr 0 0 w where+instance {-# OVERLAPPABLE #-} (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@@ -376,7 +376,7 @@ 		((x :..) <$>) <$> unfoldrMRangeMaybeWithBase xs p f  instance {-# OVERLAPPABLE #-}-	Unfoldr 0 (v - 1) (w - 1) => Unfoldr 0 v w where+	(1 <= v, 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 =@@ -389,7 +389,7 @@ 		((x :.) <$>) <$> unfoldrMRangeMaybeWithBase xs p f  instance {-# OVERLAPPABLE #-}-	(1 <= n, Unfoldr (n - 1) (v - 1) (w - 1)) => Unfoldr n v w where+	(1 <= n, 1 <= v, Unfoldr (n - 1) (v - 1) (w - 1)) => Unfoldr n v w where 	unfoldrMRangeWithBase (x :. xs) p f = 		(x :.) <$> unfoldrMRangeWithBase xs p f @@ -588,7 +588,7 @@ instance ZipL 0 0 v w where zipWithML _ NilL = pure . (NilL ,)  instance {-# OVERLAPPABLE #-} (-	1 <= v, LoosenLMin v w (v - m), LoosenLMax (v - m) (w - 1) w,+	1 <= v, m <= v, LoosenLMin v w (v - m), LoosenLMax (v - m) (w - 1) w, 	ZipL 0 (m - 1) (v - 1) (w - 1) ) => ZipL 0 m v w where 	zipWithML _ NilL ys = pure (NilL, loosenLMin ys) 	zipWithML (%) (x :.. xs) (y :. ys) =
src/Data/List/Range/RangeR.hs view
@@ -267,7 +267,7 @@ 	loosenRMin (xs :+ x) = loosenRMin xs :++ x  instance {-# OVERLAPPABLE #-}-	(1 <= n, LoosenRMin (n - 1) (m - 1) (v - 1)) => LoosenRMin n m v where+	(1 <= n, 1 <= v, LoosenRMin (n - 1) (m - 1) (v - 1)) => LoosenRMin n m v where 	loosenRMin (xs :+ x) = loosenRMin xs :+ x  -- LOOSEN RIGHT MAX@@ -293,11 +293,11 @@ instance LoosenRMax 0 0 m where loosenRMax NilR = NilR  instance {-# OVERLAPPABLE #-}-	LoosenRMax 0 (m - 1) (w - 1) => LoosenRMax 0 m w where+	(1 <= w, LoosenRMax 0 (m - 1) (w - 1)) => LoosenRMax 0 m w where 	loosenRMax = \case NilR -> NilR; xs :++ x -> loosenRMax xs :++ x  instance {-# OVERLAPPABLE #-}-	(1 <= n, LoosenRMax (n - 1) (m - 1) (w - 1)) => LoosenRMax n m w where+	(1 <= n, 1 <= w, LoosenRMax (n - 1) (m - 1) (w - 1)) => LoosenRMax n m w where 	loosenRMax (xs :+ x) = loosenRMax xs :+ x  ---------------------------------------------------------------------------@@ -354,7 +354,7 @@ 	unfoldlMRangeWithBase _ _ NilR = pure NilR 	unfoldlMRangeMaybeWithBase p _ NilR = bool (Just NilR) Nothing <$> p -instance {-# OVERLAPPABLE #-} Unfoldl 0 0 (w - 1) => Unfoldl 0 0 w where+instance {-# OVERLAPPABLE #-} (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@@ -365,7 +365,7 @@ 			((:++ x) <$>) <$> unfoldlMRangeMaybeWithBase p f NilR 		xs :++ x -> ((:++ x) <$>) <$> unfoldlMRangeMaybeWithBase p f xs -instance {-# OVERLAPPABLE #-} Unfoldl 0 (v - 1) (w - 1) => Unfoldl 0 v w where+instance {-# OVERLAPPABLE #-} (1 <= v, 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@@ -376,7 +376,7 @@ 		xs :++ x -> ((:+ x) <$>) <$> unfoldlMRangeMaybeWithBase p f xs  instance {-# OVERLAPPABLE #-}-	(1 <= n, Unfoldl (n - 1) (v - 1) (w - 1)) => Unfoldl n v w where+	(1 <= n, 1 <= v, Unfoldl (n - 1) (v - 1) (w - 1)) => Unfoldl n v w where 	unfoldlMRangeWithBase p f (xs :+ x) = 		(:+ x) <$> unfoldlMRangeWithBase p f xs @@ -572,7 +572,7 @@ instance ZipR n m 0 0 where zipWithMR _ xs NilR = pure (xs, NilR)  instance {-# OVERLAPPABLE #-} (-	1 <= n, LoosenRMin n m (n - w), LoosenRMax (n - w) (m - 1) m,+	1 <= n, 1 <= m, w <= n, LoosenRMin n m (n - w), LoosenRMax (n - w) (m - 1) m, 	ZipR (n - 1) (m - 1) 0 (w - 1) ) => ZipR n m 0 w where 	zipWithMR _ xs NilR = pure (loosenRMin xs, NilR) 	zipWithMR (%) (xs :+ x) (ys :++ y) =