packages feed

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