hkd 0.1 → 0.2
raw patch · 6 files changed
+54/−9 lines, 6 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
- Data.HKD: instance forall k (f :: k -> *) (f' :: k -> *) (g :: k -> *) (g' :: k -> *) (h :: k -> *) (h' :: k -> *) (t0 :: (k -> *) -> *) (t1 :: (k -> *) -> *) (t2 :: (k -> *) -> *) i0 i1 i2. (f Data.Type.Equality.~ f', g Data.Type.Equality.~ g', h Data.Type.Equality.~ h', t0 Data.Type.Equality.~ t1, t1 Data.Type.Equality.~ t2, i0 Data.Type.Equality.~ GHC.Generics.R, i1 Data.Type.Equality.~ GHC.Generics.R, i2 Data.Type.Equality.~ GHC.Generics.R, Data.HKD.FZip t0) => Data.HKD.GFZip2 f g h (GHC.Generics.K1 i0 (t0 f')) (GHC.Generics.K1 i1 (t1 g')) (GHC.Generics.K1 i2 (t2 h'))
- Data.HKD: instance forall k (f :: k -> *) (f' :: k -> *) (g :: k -> *) (g' :: k -> *) (h :: k -> *) (h' :: k -> *) (x0 :: k) (x1 :: k) (x2 :: k) i0 i1 i2. (f Data.Type.Equality.~ f', g Data.Type.Equality.~ g', h Data.Type.Equality.~ h', x0 Data.Type.Equality.~ x1, x1 Data.Type.Equality.~ x2, i0 Data.Type.Equality.~ GHC.Generics.R, i1 Data.Type.Equality.~ GHC.Generics.R, i2 Data.Type.Equality.~ GHC.Generics.R) => Data.HKD.GFZip2 f g h (GHC.Generics.K1 i0 (f' x0)) (GHC.Generics.K1 i1 (g' x1)) (GHC.Generics.K1 i2 (h' x2))
- Data.HKD: instance forall k (f :: k -> *) (f' :: k -> *) (g :: k -> *) (g' :: k -> *) (t :: (k -> *) -> *) (t' :: (k -> *) -> *) i i' (m :: * -> *). (f Data.Type.Equality.~ f', g Data.Type.Equality.~ g', t Data.Type.Equality.~ t', i Data.Type.Equality.~ GHC.Generics.R, i' Data.Type.Equality.~ GHC.Generics.R, GHC.Base.Applicative m, Data.HKD.FTraversable t) => Data.HKD.GFTraversable2 m f g (GHC.Generics.K1 i (t f')) (GHC.Generics.K1 i' (t' g'))
- Data.HKD: instance forall k (f :: k -> *) (f' :: k -> *) (g :: k -> *) (g' :: k -> *) (x :: k) (x' :: k) i i' (m :: * -> *). (f Data.Type.Equality.~ f', g Data.Type.Equality.~ g', x Data.Type.Equality.~ x', i Data.Type.Equality.~ GHC.Generics.R, i' Data.Type.Equality.~ GHC.Generics.R, GHC.Base.Functor m) => Data.HKD.GFTraversable2 m f g (GHC.Generics.K1 i (f' x)) (GHC.Generics.K1 i' (g' x'))
- Data.HKD: instance forall k i (f :: k -> *) (f' :: k -> *) (t :: (k -> *) -> *). (i Data.Type.Equality.~ GHC.Generics.R, f Data.Type.Equality.~ f', Data.HKD.FRepeat t) => Data.HKD.GFRepeat2 f (GHC.Generics.K1 i (t f'))
- Data.HKD: instance forall k i (f :: k -> *) (f' :: k -> *) (x :: k). (i Data.Type.Equality.~ GHC.Generics.R, f Data.Type.Equality.~ f') => Data.HKD.GFRepeat2 f (GHC.Generics.K1 i (f' x))
- Data.HKD: instance forall k i (g :: k -> *) (f :: * -> *) (c :: GHC.Generics.Meta). (i Data.Type.Equality.~ GHC.Generics.C, Data.HKD.GFRepeat2 g f) => Data.HKD.GFRepeat1 g (GHC.Generics.M1 i c f)
- Data.HKD: instance forall k i (g :: k -> *) (f :: * -> *) (c :: GHC.Generics.Meta). (i Data.Type.Equality.~ GHC.Generics.D, Data.HKD.GFRepeat1 g f) => Data.HKD.GFRepeat g (GHC.Generics.M1 i c f)
- Data.HKD: instance forall k i (g :: k -> *) (f :: * -> *) (c :: GHC.Generics.Meta). (i Data.Type.Equality.~ GHC.Generics.S, Data.HKD.GFRepeat2 g f) => Data.HKD.GFRepeat2 g (GHC.Generics.M1 i c f)
- Data.HKD: instance forall k i i' (m :: * -> *) (f :: k -> *) (g :: k -> *) (h :: * -> *) (h' :: * -> *) (c :: GHC.Generics.Meta) (c' :: GHC.Generics.Meta). (i Data.Type.Equality.~ GHC.Generics.C, i' Data.Type.Equality.~ GHC.Generics.C, GHC.Base.Functor m, Data.HKD.GFTraversable2 m f g h h') => Data.HKD.GFTraversable1 m f g (GHC.Generics.M1 i c h) (GHC.Generics.M1 i' c' h')
- Data.HKD: instance forall k i i' (m :: * -> *) (f :: k -> *) (g :: k -> *) (h :: * -> *) (h' :: * -> *) (c :: GHC.Generics.Meta) (c' :: GHC.Generics.Meta). (i Data.Type.Equality.~ GHC.Generics.D, i' Data.Type.Equality.~ GHC.Generics.D, GHC.Base.Functor m, Data.HKD.GFTraversable1 m f g h h') => Data.HKD.GFTraversable m f g (GHC.Generics.M1 i c h) (GHC.Generics.M1 i' c' h')
- Data.HKD: instance forall k i i' (m :: * -> *) (f :: k -> *) (g :: k -> *) (h :: * -> *) (h' :: * -> *) (c :: GHC.Generics.Meta) (c' :: GHC.Generics.Meta). (i Data.Type.Equality.~ GHC.Generics.S, i' Data.Type.Equality.~ GHC.Generics.S, GHC.Base.Functor m, Data.HKD.GFTraversable2 m f g h h') => Data.HKD.GFTraversable2 m f g (GHC.Generics.M1 i c h) (GHC.Generics.M1 i' c' h')
- Data.HKD: instance forall k i0 i1 i2 (f :: k -> *) (g :: k -> *) (h :: k -> *) (t0 :: * -> *) (t1 :: * -> *) (t2 :: * -> *) (c0 :: GHC.Generics.Meta) (c1 :: GHC.Generics.Meta) (c2 :: GHC.Generics.Meta). (i0 Data.Type.Equality.~ GHC.Generics.C, i1 Data.Type.Equality.~ GHC.Generics.C, i2 Data.Type.Equality.~ GHC.Generics.C, Data.HKD.GFZip2 f g h t0 t1 t2) => Data.HKD.GFZip1 f g h (GHC.Generics.M1 i0 c0 t0) (GHC.Generics.M1 i1 c1 t1) (GHC.Generics.M1 i2 c2 t2)
- Data.HKD: instance forall k i0 i1 i2 (f :: k -> *) (g :: k -> *) (h :: k -> *) (t0 :: * -> *) (t1 :: * -> *) (t2 :: * -> *) (c0 :: GHC.Generics.Meta) (c1 :: GHC.Generics.Meta) (c2 :: GHC.Generics.Meta). (i0 Data.Type.Equality.~ GHC.Generics.D, i1 Data.Type.Equality.~ GHC.Generics.D, i2 Data.Type.Equality.~ GHC.Generics.D, Data.HKD.GFZip1 f g h t0 t1 t2) => Data.HKD.GFZip f g h (GHC.Generics.M1 i0 c0 t0) (GHC.Generics.M1 i1 c1 t1) (GHC.Generics.M1 i2 c2 t2)
- Data.HKD: instance forall k i0 i1 i2 (f :: k -> *) (g :: k -> *) (h :: k -> *) (t0 :: * -> *) (t1 :: * -> *) (t2 :: * -> *) (c0 :: GHC.Generics.Meta) (c1 :: GHC.Generics.Meta) (c2 :: GHC.Generics.Meta). (i0 Data.Type.Equality.~ GHC.Generics.S, i1 Data.Type.Equality.~ GHC.Generics.S, i2 Data.Type.Equality.~ GHC.Generics.S, Data.HKD.GFZip2 f g h t0 t1 t2) => Data.HKD.GFZip2 f g h (GHC.Generics.M1 i0 c0 t0) (GHC.Generics.M1 i1 c1 t1) (GHC.Generics.M1 i2 c2 t2)
+ Data.HKD: instance forall k (f :: k -> *) (f' :: k -> *) (g :: k -> *) (g' :: k -> *) (h :: k -> *) (h' :: k -> *) (t0 :: (k -> *) -> *) (t1 :: (k -> *) -> *) (t2 :: (k -> *) -> *) i0 i1 i2. (f GHC.Types.~ f', g GHC.Types.~ g', h GHC.Types.~ h', t0 GHC.Types.~ t1, t1 GHC.Types.~ t2, i0 GHC.Types.~ GHC.Generics.R, i1 GHC.Types.~ GHC.Generics.R, i2 GHC.Types.~ GHC.Generics.R, Data.HKD.FZip t0) => Data.HKD.GFZip2 f g h (GHC.Generics.K1 i0 (t0 f')) (GHC.Generics.K1 i1 (t1 g')) (GHC.Generics.K1 i2 (t2 h'))
+ Data.HKD: instance forall k (f :: k -> *) (f' :: k -> *) (g :: k -> *) (g' :: k -> *) (h :: k -> *) (h' :: k -> *) (x0 :: k) (x1 :: k) (x2 :: k) i0 i1 i2. (f GHC.Types.~ f', g GHC.Types.~ g', h GHC.Types.~ h', x0 GHC.Types.~ x1, x1 GHC.Types.~ x2, i0 GHC.Types.~ GHC.Generics.R, i1 GHC.Types.~ GHC.Generics.R, i2 GHC.Types.~ GHC.Generics.R) => Data.HKD.GFZip2 f g h (GHC.Generics.K1 i0 (f' x0)) (GHC.Generics.K1 i1 (g' x1)) (GHC.Generics.K1 i2 (h' x2))
+ Data.HKD: instance forall k (f :: k -> *) (f' :: k -> *) (g :: k -> *) (g' :: k -> *) (t :: (k -> *) -> *) (t' :: (k -> *) -> *) i i' (m :: * -> *). (f GHC.Types.~ f', g GHC.Types.~ g', t GHC.Types.~ t', i GHC.Types.~ GHC.Generics.R, i' GHC.Types.~ GHC.Generics.R, GHC.Base.Applicative m, Data.HKD.FTraversable t) => Data.HKD.GFTraversable2 m f g (GHC.Generics.K1 i (t f')) (GHC.Generics.K1 i' (t' g'))
+ Data.HKD: instance forall k (f :: k -> *) (f' :: k -> *) (g :: k -> *) (g' :: k -> *) (x :: k) (x' :: k) i i' (m :: * -> *). (f GHC.Types.~ f', g GHC.Types.~ g', x GHC.Types.~ x', i GHC.Types.~ GHC.Generics.R, i' GHC.Types.~ GHC.Generics.R, GHC.Base.Functor m) => Data.HKD.GFTraversable2 m f g (GHC.Generics.K1 i (f' x)) (GHC.Generics.K1 i' (g' x'))
+ Data.HKD: instance forall k i (f :: k -> *) (f' :: k -> *) (t :: (k -> *) -> *). (i GHC.Types.~ GHC.Generics.R, f GHC.Types.~ f', Data.HKD.FRepeat t) => Data.HKD.GFRepeat2 f (GHC.Generics.K1 i (t f'))
+ Data.HKD: instance forall k i (f :: k -> *) (f' :: k -> *) (x :: k). (i GHC.Types.~ GHC.Generics.R, f GHC.Types.~ f') => Data.HKD.GFRepeat2 f (GHC.Generics.K1 i (f' x))
+ Data.HKD: instance forall k i (g :: k -> *) (f :: * -> *) (c :: GHC.Generics.Meta). (i GHC.Types.~ GHC.Generics.C, Data.HKD.GFRepeat2 g f) => Data.HKD.GFRepeat1 g (GHC.Generics.M1 i c f)
+ Data.HKD: instance forall k i (g :: k -> *) (f :: * -> *) (c :: GHC.Generics.Meta). (i GHC.Types.~ GHC.Generics.D, Data.HKD.GFRepeat1 g f) => Data.HKD.GFRepeat g (GHC.Generics.M1 i c f)
+ Data.HKD: instance forall k i (g :: k -> *) (f :: * -> *) (c :: GHC.Generics.Meta). (i GHC.Types.~ GHC.Generics.S, Data.HKD.GFRepeat2 g f) => Data.HKD.GFRepeat2 g (GHC.Generics.M1 i c f)
+ Data.HKD: instance forall k i i' (m :: * -> *) (f :: k -> *) (g :: k -> *) (h :: * -> *) (h' :: * -> *) (c :: GHC.Generics.Meta) (c' :: GHC.Generics.Meta). (i GHC.Types.~ GHC.Generics.C, i' GHC.Types.~ GHC.Generics.C, GHC.Base.Functor m, Data.HKD.GFTraversable2 m f g h h') => Data.HKD.GFTraversable1 m f g (GHC.Generics.M1 i c h) (GHC.Generics.M1 i' c' h')
+ Data.HKD: instance forall k i i' (m :: * -> *) (f :: k -> *) (g :: k -> *) (h :: * -> *) (h' :: * -> *) (c :: GHC.Generics.Meta) (c' :: GHC.Generics.Meta). (i GHC.Types.~ GHC.Generics.D, i' GHC.Types.~ GHC.Generics.D, GHC.Base.Functor m, Data.HKD.GFTraversable1 m f g h h') => Data.HKD.GFTraversable m f g (GHC.Generics.M1 i c h) (GHC.Generics.M1 i' c' h')
+ Data.HKD: instance forall k i i' (m :: * -> *) (f :: k -> *) (g :: k -> *) (h :: * -> *) (h' :: * -> *) (c :: GHC.Generics.Meta) (c' :: GHC.Generics.Meta). (i GHC.Types.~ GHC.Generics.S, i' GHC.Types.~ GHC.Generics.S, GHC.Base.Functor m, Data.HKD.GFTraversable2 m f g h h') => Data.HKD.GFTraversable2 m f g (GHC.Generics.M1 i c h) (GHC.Generics.M1 i' c' h')
+ Data.HKD: instance forall k i0 i1 i2 (f :: k -> *) (g :: k -> *) (h :: k -> *) (t0 :: * -> *) (t1 :: * -> *) (t2 :: * -> *) (c0 :: GHC.Generics.Meta) (c1 :: GHC.Generics.Meta) (c2 :: GHC.Generics.Meta). (i0 GHC.Types.~ GHC.Generics.C, i1 GHC.Types.~ GHC.Generics.C, i2 GHC.Types.~ GHC.Generics.C, Data.HKD.GFZip2 f g h t0 t1 t2) => Data.HKD.GFZip1 f g h (GHC.Generics.M1 i0 c0 t0) (GHC.Generics.M1 i1 c1 t1) (GHC.Generics.M1 i2 c2 t2)
+ Data.HKD: instance forall k i0 i1 i2 (f :: k -> *) (g :: k -> *) (h :: k -> *) (t0 :: * -> *) (t1 :: * -> *) (t2 :: * -> *) (c0 :: GHC.Generics.Meta) (c1 :: GHC.Generics.Meta) (c2 :: GHC.Generics.Meta). (i0 GHC.Types.~ GHC.Generics.D, i1 GHC.Types.~ GHC.Generics.D, i2 GHC.Types.~ GHC.Generics.D, Data.HKD.GFZip1 f g h t0 t1 t2) => Data.HKD.GFZip f g h (GHC.Generics.M1 i0 c0 t0) (GHC.Generics.M1 i1 c1 t1) (GHC.Generics.M1 i2 c2 t2)
+ Data.HKD: instance forall k i0 i1 i2 (f :: k -> *) (g :: k -> *) (h :: k -> *) (t0 :: * -> *) (t1 :: * -> *) (t2 :: * -> *) (c0 :: GHC.Generics.Meta) (c1 :: GHC.Generics.Meta) (c2 :: GHC.Generics.Meta). (i0 GHC.Types.~ GHC.Generics.S, i1 GHC.Types.~ GHC.Generics.S, i2 GHC.Types.~ GHC.Generics.S, Data.HKD.GFZip2 f g h t0 t1 t2) => Data.HKD.GFZip2 f g h (GHC.Generics.M1 i0 c0 t0) (GHC.Generics.M1 i1 c1 t1) (GHC.Generics.M1 i2 c2 t2)
- Data.HKD: gfrepeat :: forall t (f :: Type -> Type). (Generic (t f), GFRepeat f (Rep (t f))) => (forall x. f x) -> t f
+ Data.HKD: gfrepeat :: forall t f. (Generic (t f), GFRepeat f (Rep (t f))) => (forall x. f x) -> t f
- Data.HKD: gftraverse :: forall t (f :: Type -> Type) (g :: Type -> Type) m. (Applicative m, Generic (t f), Generic (t g), GFTraversable (Curried (Yoneda m)) f g (Rep (t f)) (Rep (t g))) => (forall a. f a -> m (g a)) -> t f -> m (t g)
+ Data.HKD: gftraverse :: forall t f g m. (Applicative m, Generic (t f), Generic (t g), GFTraversable (Curried (Yoneda m)) f g (Rep (t f)) (Rep (t g))) => (forall a. f a -> m (g a)) -> t f -> m (t g)
- Data.HKD: gfzipWith :: forall t (f :: Type -> Type) (g :: Type -> Type) (h :: Type -> Type). (Generic (t f), Generic (t g), Generic (t h), GFZip f g h (Rep (t f)) (Rep (t g)) (Rep (t h))) => (forall a. f a -> g a -> h a) -> t f -> t g -> t h
+ Data.HKD: gfzipWith :: forall t f g h. (Generic (t f), Generic (t g), Generic (t h), GFZip f g h (Rep (t f)) (Rep (t g)) (Rep (t h))) => (forall a. f a -> g a -> h a) -> t f -> t g -> t h
Files
- CHANGELOG.md +4/−0
- example/Record.hs +3/−3
- example/example-issue-12.hs +25/−0
- hkd.cabal +18/−3
- src/Data/Functor/Confusing.hs +1/−0
- src/Data/HKD.hs +3/−3
CHANGELOG.md view
@@ -1,3 +1,7 @@+# 0.2++* Generalize kinds of gftraverse, gfzipWith and gfrepeat.+ # 0 * Split off from `codex`
example/Record.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE PolyKinds #-} module Main ( main, Record (..),@@ -48,8 +48,8 @@ -- Units ------------------------------------------------------------------------------- -data MyU1 (f :: Type -> Type) = MyU1 deriving Generic-data MyV1 (f :: Type -> Type) deriving Generic+data MyU1 (f :: k -> Type) = MyU1 deriving Generic+data MyV1 (f :: k -> Type) deriving Generic instance FFunctor MyU1 where ffmap = ffmapDefault instance FFoldable MyU1 where ffoldMap = ffoldMapDefault
+ example/example-issue-12.hs view
@@ -0,0 +1,25 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE KindSignatures #-}+module Main where++import Data.HKD+import GHC.Generics (Generic)++data Foo = Foo | Bar | Baz++data MyHkd (f :: Foo -> *) = MyHkd+ { foo :: f 'Foo+ , bar :: f 'Bar+ , baz :: f 'Baz+ }+ deriving Generic++instance FFunctor MyHkd where ffmap = ffmapDefault+instance FFoldable MyHkd where ffoldMap = ffoldMapDefault+instance FTraversable MyHkd where ftraverse = gftraverse+instance FZip MyHkd where fzipWith = gfzipWith+instance FRepeat MyHkd where frepeat = gfrepeat++main :: IO ()+main = return ()
hkd.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: hkd-version: 0.1+version: 0.2 synopsis: "higher-kinded data" description: "Higher-kinded data" utilities, e.g.@@ -34,7 +34,11 @@ || ==8.2.2 || ==8.4.4 || ==8.6.5- || ==8.8.1+ || ==8.8.4+ || ==8.10.7+ || ==9.0.2+ || ==9.2.4+ || ==9.4.2 source-repository head type: git@@ -57,7 +61,7 @@ -Wredundant-constraints -Widentities -Wmissing-export-lists build-depends:- , base >=4.6 && <4.14+ , base >=4.6 && <4.18 , some ^>=1.0.0.3 if !impl(ghc >=7.10)@@ -93,3 +97,14 @@ , base , hkd , some++test-suite example-issue-12+ type: exitcode-stdio-1.0+ default-language: Haskell2010+ ghc-options: -Wall+ hs-source-dirs: example+ main-is: example-issue-12.hs ++ build-depends:+ , base+ , hkd
src/Data/Functor/Confusing.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-} -- | -- Csongor Kiss, Matthew Pickering, and Nicolas Wu. 2018. Generic deriving of generic traversals.
src/Data/HKD.hs view
@@ -538,7 +538,7 @@ -- @ gftraverse- :: forall t (f :: Type -> Type) (g :: Type -> Type) m. (Applicative m, Generic (t f), Generic (t g), GFTraversable (Curried (Yoneda m)) f g (Rep (t f)) (Rep (t g)))+ :: forall t f g m. (Applicative m, Generic (t f), Generic (t g), GFTraversable (Curried (Yoneda m)) f g (Rep (t f)) (Rep (t g))) => (forall a. f a -> m (g a)) -> t f -> m (t g)@@ -615,7 +615,7 @@ -- @ gfzipWith- :: forall t (f :: Type -> Type) (g :: Type -> Type) (h :: Type -> Type). (Generic (t f), Generic (t g), Generic (t h), GFZip f g h (Rep (t f)) (Rep (t g)) (Rep (t h)))+ :: forall t f g h. (Generic (t f), Generic (t g), Generic (t h), GFZip f g h (Rep (t f)) (Rep (t g)) (Rep (t h))) => (forall a. f a -> g a -> h a) -> t f -> t g@@ -665,7 +665,7 @@ ------------------------------------------------------------------------------- gfrepeat- :: forall t (f :: Type -> Type). (Generic (t f), GFRepeat f (Rep (t f)))+ :: forall t f. (Generic (t f), GFRepeat f (Rep (t f))) => (forall x. f x) -> t f gfrepeat x = to (gfrepeat0 x)