haskus-utils-data 1.3 → 1.4
raw patch · 4 files changed
+27/−19 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Haskus.Utils.Functor: Fix :: f (Fix f) -> Fix
- Haskus.Utils.Functor: Mu :: (forall a. () => (f a -> a) -> a) -> Mu
- Haskus.Utils.Functor: [Nu] :: forall (f :: Type -> Type) a. () => (a -> f a) -> a -> Nu f
- Haskus.Utils.Functor: data Nu (f :: Type -> Type)
- Haskus.Utils.Functor: hoistMu :: () => (forall a. () => f a -> g a) -> Mu f -> Mu g
- Haskus.Utils.Functor: hoistNu :: () => (forall a. () => f a -> g a) -> Nu f -> Nu g
- Haskus.Utils.Functor: newtype Fix (f :: Type -> Type)
- Haskus.Utils.Functor: newtype Mu (f :: Type -> Type)
- Haskus.Utils.Functor: unfix :: () => Fix f -> f (Fix f)
- Haskus.Utils.HList: instance ((x, y) Data.Type.Equality.~ z, Haskus.Utils.HList.HZipList xs ys zs) => Haskus.Utils.HList.HZipList (x : xs) (y : ys) (z : zs)
- Haskus.Utils.HList: instance (v Data.Type.Equality.~ v') => Haskus.Utils.HList.HFoldr f v '[] v'
- Haskus.Utils.HList: instance (v Data.Type.Equality.~ v') => Haskus.Utils.HList.HFoldr' f v '[] v'
- Haskus.Utils.HList: instance (z Data.Type.Equality.~ z') => Haskus.Utils.HList.HFoldl f z '[] z'
- Haskus.Utils.HList: instance (z Data.Type.Equality.~ z') => Haskus.Utils.HList.HFoldl' f z '[] z'
- Haskus.Utils.HList: instance (zx Data.Type.Equality.~ (z, x), Haskus.Utils.HList.Apply f zx z', Haskus.Utils.HList.HFoldl f z' xs r) => Haskus.Utils.HList.HFoldl f z (x : xs) r
- Haskus.Utils.HList: instance (zx Data.Type.Equality.~ (z, x), Haskus.Utils.HList.Apply f zx z', Haskus.Utils.HList.HFoldl' f z' xs r) => Haskus.Utils.HList.HFoldl' f z (x : xs) r
- Haskus.Utils.Tuple: Unit :: a -> Unit a
- Haskus.Utils.Tuple: data Unit a
- Haskus.Utils.Tuple: instance Haskus.Utils.Tuple.ReorderTuple (GHC.Tuple.Unit a) (GHC.Tuple.Unit a)
- Haskus.Utils.Tuple: instance Haskus.Utils.Tuple.TupleCons a (GHC.Tuple.Unit b) (a, b)
- Haskus.Utils.Tuple: instance Haskus.Utils.Tuple.TupleTail (a, b) (GHC.Tuple.Unit b)
+ Haskus.Utils.Functor: mana :: (forall y. () => (x -> y) -> x -> f y) -> x -> Fix f
+ Haskus.Utils.Functor: mapo :: (forall y. () => (Fix f -> y) -> (x -> y) -> x -> f y) -> x -> Fix f
+ Haskus.Utils.Functor: mfutu :: (forall y. () => (f y -> y) -> (x -> y) -> x -> f y) -> x -> Fix f
+ Haskus.Utils.Functor: mpara :: (forall y. () => (y -> c) -> (y -> Fix f) -> f y -> c) -> Fix f -> c
+ Haskus.Utils.Functor: mzygo :: (forall y. () => (y -> b) -> f y -> b) -> (forall y. () => (y -> c) -> (y -> b) -> f y -> c) -> Fix f -> c
+ Haskus.Utils.HList: instance ((x, y) GHC.Types.~ z, Haskus.Utils.HList.HZipList xs ys zs) => Haskus.Utils.HList.HZipList (x : xs) (y : ys) (z : zs)
+ Haskus.Utils.HList: instance (v GHC.Types.~ v') => Haskus.Utils.HList.HFoldr f v '[] v'
+ Haskus.Utils.HList: instance (v GHC.Types.~ v') => Haskus.Utils.HList.HFoldr' f v '[] v'
+ Haskus.Utils.HList: instance (z GHC.Types.~ z') => Haskus.Utils.HList.HFoldl f z '[] z'
+ Haskus.Utils.HList: instance (z GHC.Types.~ z') => Haskus.Utils.HList.HFoldl' f z '[] z'
+ Haskus.Utils.HList: instance (zx GHC.Types.~ (z, x), Haskus.Utils.HList.Apply f zx z', Haskus.Utils.HList.HFoldl f z' xs r) => Haskus.Utils.HList.HFoldl f z (x : xs) r
+ Haskus.Utils.HList: instance (zx GHC.Types.~ (z, x), Haskus.Utils.HList.Apply f zx z', Haskus.Utils.HList.HFoldl' f z' xs r) => Haskus.Utils.HList.HFoldl' f z (x : xs) r
+ Haskus.Utils.Tuple: instance Haskus.Utils.Tuple.ReorderTuple (Haskus.Utils.Tuple.Solo a) (Haskus.Utils.Tuple.Solo a)
+ Haskus.Utils.Tuple: instance Haskus.Utils.Tuple.TupleCons a (Haskus.Utils.Tuple.Solo b) (a, b)
+ Haskus.Utils.Tuple: instance Haskus.Utils.Tuple.TupleTail (a, b) (Haskus.Utils.Tuple.Solo b)
+ Haskus.Utils.Tuple: pattern Solo :: a -> Solo a
+ Haskus.Utils.Tuple: type Solo = Unit
- Haskus.Utils.Functor: mcata :: () => (forall y. () => (y -> c) -> f y -> c) -> Fix f -> c
+ Haskus.Utils.Functor: mcata :: (forall y. () => (y -> c) -> f y -> c) -> Fix f -> c
- Haskus.Utils.Functor: mhisto :: () => (forall y. () => (y -> c) -> (y -> f y) -> f y -> c) -> Fix f -> c
+ Haskus.Utils.Functor: mhisto :: (forall y. () => (y -> c) -> (y -> f y) -> f y -> c) -> Fix f -> c
- Haskus.Utils.HList: class HFoldl f (z :: *) xs (r :: *)
+ Haskus.Utils.HList: class HFoldl f (z :: Type) xs (r :: Type)
- Haskus.Utils.HList: class HFoldl' f (z :: *) xs (r :: *)
+ Haskus.Utils.HList: class HFoldl' f (z :: Type) xs (r :: Type)
- Haskus.Utils.HList: class HFoldr f v (l :: [*]) r
+ Haskus.Utils.HList: class HFoldr f v (l :: [Type]) r
- Haskus.Utils.HList: class HFoldr' f v (l :: [*]) r
+ Haskus.Utils.HList: class HFoldr' f v (l :: [Type]) r
- Haskus.Utils.HList: data family HList (l :: [*])
+ Haskus.Utils.HList: data family HList (l :: [Type])
- Haskus.Utils.List: (++) :: () => [a] -> [a] -> [a]
+ Haskus.Utils.List: (++) :: [a] -> [a] -> [a]
- Haskus.Utils.List: deleteBy :: () => (a -> a -> Bool) -> a -> [a] -> [a]
+ Haskus.Utils.List: deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
- Haskus.Utils.List: groupBy :: () => (a -> a -> Bool) -> [a] -> [[a]]
+ Haskus.Utils.List: groupBy :: (a -> a -> Bool) -> [a] -> [[a]]
- Haskus.Utils.List: head :: () => [a] -> a
+ Haskus.Utils.List: head :: [a] -> a
- Haskus.Utils.List: intersperse :: () => a -> [a] -> [a]
+ Haskus.Utils.List: intersperse :: a -> [a] -> [a]
- Haskus.Utils.List: nubBy :: () => (a -> a -> Bool) -> [a] -> [a]
+ Haskus.Utils.List: nubBy :: (a -> a -> Bool) -> [a] -> [a]
- Haskus.Utils.List: partition :: () => (a -> Bool) -> [a] -> ([a], [a])
+ Haskus.Utils.List: partition :: (a -> Bool) -> [a] -> ([a], [a])
- Haskus.Utils.List: repeat :: () => a -> [a]
+ Haskus.Utils.List: repeat :: a -> [a]
- Haskus.Utils.List: sortBy :: () => (a -> a -> Ordering) -> [a] -> [a]
+ Haskus.Utils.List: sortBy :: (a -> a -> Ordering) -> [a] -> [a]
- Haskus.Utils.List: tail :: () => [a] -> [a]
+ Haskus.Utils.List: tail :: [a] -> [a]
- Haskus.Utils.List: transpose :: () => [[a]] -> [[a]]
+ Haskus.Utils.List: transpose :: [[a]] -> [[a]]
- Haskus.Utils.List: zip3 :: () => [a] -> [b] -> [c] -> [(a, b, c)]
+ Haskus.Utils.List: zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]
- Haskus.Utils.List: zip4 :: () => [a] -> [b] -> [c] -> [d] -> [(a, b, c, d)]
+ Haskus.Utils.List: zip4 :: [a] -> [b] -> [c] -> [d] -> [(a, b, c, d)]
- Haskus.Utils.List: zip5 :: () => [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)]
+ Haskus.Utils.List: zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)]
- Haskus.Utils.List: zip6 :: () => [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a, b, c, d, e, f)]
+ Haskus.Utils.List: zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a, b, c, d, e, f)]
- Haskus.Utils.List: zip7 :: () => [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a, b, c, d, e, f, g)]
+ Haskus.Utils.List: zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a, b, c, d, e, f, g)]
- Haskus.Utils.List: zipWith :: () => (a -> b -> c) -> [a] -> [b] -> [c]
+ Haskus.Utils.List: zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
Files
- haskus-utils-data.cabal +1/−1
- src/lib/Haskus/Utils/HList.hs +7/−7
- src/lib/Haskus/Utils/Monad.hs +2/−2
- src/lib/Haskus/Utils/Tuple.hs +17/−9
haskus-utils-data.cabal view
@@ -1,5 +1,5 @@ name: haskus-utils-data-version: 1.3+version: 1.4 synopsis: Haskus data utility modules license: BSD3 license-file: LICENSE
src/lib/Haskus/Utils/HList.hs view
@@ -38,7 +38,7 @@ import Haskus.Utils.Types -- | Heterogeneous list-data family HList (l :: [*])+data family HList (l :: [Type]) data instance HList '[] = HNil data instance HList (x ': xs) = x `HCons` HList xs @@ -89,7 +89,7 @@ -- Folding -------------------------------------- -class HFoldr f v (l :: [*]) r where+class HFoldr f v (l :: [Type]) r where hFoldr :: f -> v -> HList l -> r instance (v ~ v') => HFoldr f v '[] v' where@@ -107,7 +107,7 @@ -- -- It allows us to foldr over a list of types, without any associated hlist of -- values.-class HFoldr' f v (l :: [*]) r where+class HFoldr' f v (l :: [Type]) r where hFoldr' :: f -> v -> HList l -> r instance (v ~ v') => HFoldr' f v '[] v' where@@ -122,7 +122,7 @@ -- supposedly in the list (we don't have a real list associated to HList l) hFoldr' f v _ = apply f (undefined :: e, hFoldr' f v (undefined :: HList l) :: r) -class HFoldl f (z :: *) xs (r :: *) where+class HFoldl f (z :: Type) xs (r :: Type) where hFoldl :: f -> z -> HList xs -> r instance forall f z z' r x zx xs.@@ -140,7 +140,7 @@ -- -- It allows us to foldl over a list of types, without any associated hlist of -- values.-class HFoldl' f (z :: *) xs (r :: *) where+class HFoldl' f (z :: Type) xs (r :: Type) where hFoldl' :: f -> z -> HList xs -> r instance forall f z z' r x zx xs.@@ -212,8 +212,8 @@ instance HTuple '[a] where hToTuple (a `HCons` HNil)- = Unit a- hFromTuple (Unit a)+ = Solo a+ hFromTuple (Solo a) = a `HCons` HNil instance HTuple '[a,b] where
src/lib/Haskus/Utils/Monad.hs view
@@ -36,10 +36,10 @@ instance MonadInIO IO where {-# INLINABLE liftWith #-}- liftWith = id+ liftWith wth f = wth f {-# INLINABLE liftWith2 #-}- liftWith2 = id+ liftWith2 wth f = wth f instance MonadInIO m => MonadInIO (StateT s m) where {-# INLINABLE liftWith #-}
src/lib/Haskus/Utils/Tuple.hs view
@@ -13,6 +13,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilyDependencies #-} {-# LANGUAGE CPP #-}+{-# LANGUAGE PatternSynonyms #-} #if MIN_VERSION_base(4,14,0) {-# LANGUAGE StandaloneKindSignatures #-}@@ -28,7 +29,7 @@ , take4 , fromTuple4 , module Data.Tuple- , Unit (..)+ , Solo, pattern Solo , Tuple , Tuple# , TypeReps@@ -46,6 +47,13 @@ import Data.Tuple import Haskus.Utils.Types +#if !MIN_VERSION_base(4,15,0)+type Solo = Unit+{-# COMPLETE Solo #-}+pattern Solo :: a -> Solo a+pattern Solo a = Unit a+#endif+ -- | Uncurry3 uncurry3 :: (a -> b -> c -> r) -> (a,b,c) -> r {-# INLINABLE uncurry3 #-}@@ -91,7 +99,7 @@ instance ExtractTuple 0 '[a] where {-# INLINABLE tupleN #-}- tupleN (Unit t) = t+ tupleN (Solo t) = t instance ExtractTuple 0 '[e0,e1] where {-# INLINABLE tupleN #-}@@ -244,9 +252,9 @@ class TupleTail ts ts' | ts -> ts' where tupleTail :: ts -> ts' -instance TupleTail (a,b) (Unit b) where+instance TupleTail (a,b) (Solo b) where {-# INLINABLE tupleTail #-}- tupleTail (_,b) = Unit b+ tupleTail (_,b) = Solo b instance TupleTail (a,b,c) (b,c) where {-# INLINABLE tupleTail #-}@@ -269,9 +277,9 @@ class TupleCons t ts ts' | t ts -> ts' where tupleCons :: t -> ts -> ts' -instance TupleCons a (Unit b) (a,b) where+instance TupleCons a (Solo b) (a,b) where {-# INLINABLE tupleCons #-}- tupleCons a (Unit b) = (a,b)+ tupleCons a (Solo b) = (a,b) instance TupleCons a (b,c) (a,b,c) where {-# INLINABLE tupleCons #-}@@ -296,7 +304,7 @@ tupleReorder :: t1 -> t2 -instance ReorderTuple (Unit a) (Unit a) where+instance ReorderTuple (Solo a) (Solo a) where {-# INLINABLE tupleReorder #-} tupleReorder = id @@ -463,7 +471,7 @@ tupleCon = () instance TupleCon '[a] where- tupleCon = Unit+ tupleCon = Solo instance TupleCon '[a,b] where tupleCon = (,)@@ -485,7 +493,7 @@ -- TODO: put this family into GHC type family Tuple xs = t | t -> xs where Tuple '[] = ()- Tuple '[a] = Unit a+ Tuple '[a] = Solo a Tuple '[a,b] = (a,b) Tuple '[a,b,c] = (a,b,c) Tuple '[a,b,c,d] = (a,b,c,d)