packages feed

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