functor-combinators 0.4.1.2 → 0.4.1.3
raw patch · 6 files changed
+43/−14 lines, 6 filesdep ~transformersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: transformers
API changes (from Hackage documentation)
- Control.Applicative.ListF: instance Data.Semigroup.Foldable.Class.Foldable1 f => Data.Semigroup.Foldable.Class.Foldable1 (Control.Applicative.ListF.NEMapF k f)
- Control.Applicative.Step: instance Data.Semigroup.Foldable.Class.Foldable1 f => Data.Semigroup.Foldable.Class.Foldable1 (Control.Applicative.Step.Flagged f)
- Control.Applicative.Step: instance Data.Semigroup.Foldable.Class.Foldable1 f => Data.Semigroup.Foldable.Class.Foldable1 (Control.Applicative.Step.Step f)
- Control.Applicative.Step: instance Data.Semigroup.Foldable.Class.Foldable1 f => Data.Semigroup.Foldable.Class.Foldable1 (Control.Applicative.Step.Steps f)
- Control.Monad.Freer.Church: instance Data.Semigroup.Foldable.Class.Foldable1 f => Data.Semigroup.Foldable.Class.Foldable1 (Control.Monad.Freer.Church.Free1 f)
- Data.Functor.Contravariant.Conclude: instance (Data.Functor.Contravariant.Divisible.Divisible m, Data.Functor.Contravariant.Divise.Divise m) => Data.Functor.Contravariant.Conclude.Conclude (Control.Monad.Trans.List.ListT m)
- Data.Functor.Contravariant.Decide: instance Data.Functor.Contravariant.Divise.Divise m => Data.Functor.Contravariant.Decide.Decide (Control.Monad.Trans.List.ListT m)
- Data.Functor.Contravariant.Divise: instance Data.Functor.Contravariant.Divise.Divise m => Data.Functor.Contravariant.Divise.Divise (Control.Monad.Trans.Error.ErrorT e m)
- Data.Functor.Contravariant.Divise: instance Data.Functor.Contravariant.Divise.Divise m => Data.Functor.Contravariant.Divise.Divise (Control.Monad.Trans.List.ListT m)
- Data.Functor.Invariant.Inplicative: instance Data.Functor.Invariant.Inplicative.Inplicative f => Data.Functor.Invariant.Inplicative.Inplicative (Control.Monad.Trans.Error.ErrorT e f)
- Data.Functor.Invariant.Inplicative: instance Data.Functor.Invariant.Inplicative.Inplicative f => Data.Functor.Invariant.Inplicative.Inplicative (Control.Monad.Trans.List.ListT f)
- Data.Functor.Invariant.Inplicative: instance Data.Functor.Invariant.Inplicative.Inply f => Data.Functor.Invariant.Inplicative.Inply (Control.Monad.Trans.Error.ErrorT e f)
- Data.Functor.Invariant.Inplicative: instance Data.Functor.Invariant.Inplicative.Inply f => Data.Functor.Invariant.Inplicative.Inply (Control.Monad.Trans.List.ListT f)
- Data.HFunctor.Route: instance (a GHC.Types.~ Data.Void.Void) => Data.HFunctor.HBind (Data.HFunctor.Route.Pre a)
- Data.HFunctor.Route: instance (a GHC.Types.~ Data.Void.Void) => Data.HFunctor.Inject (Data.HFunctor.Route.Pre a)
- Data.HFunctor.Route: instance (a GHC.Types.~ Data.Void.Void) => Data.HFunctor.Interpret.Interpret (Data.HFunctor.Route.Pre a) f
+ Control.Applicative.ListF: instance Data.Foldable1.Foldable1 f => Data.Foldable1.Foldable1 (Control.Applicative.ListF.NEMapF k f)
+ Control.Applicative.Step: instance Data.Foldable1.Foldable1 f => Data.Foldable1.Foldable1 (Control.Applicative.Step.Flagged f)
+ Control.Applicative.Step: instance Data.Foldable1.Foldable1 f => Data.Foldable1.Foldable1 (Control.Applicative.Step.Step f)
+ Control.Applicative.Step: instance Data.Foldable1.Foldable1 f => Data.Foldable1.Foldable1 (Control.Applicative.Step.Steps f)
+ Control.Monad.Freer.Church: instance Data.Foldable1.Foldable1 f => Data.Foldable1.Foldable1 (Control.Monad.Freer.Church.Free1 f)
+ Data.HFunctor.Route: instance (a GHC.Types.~ GHC.Base.Void) => Data.HFunctor.HBind (Data.HFunctor.Route.Pre a)
+ Data.HFunctor.Route: instance (a GHC.Types.~ GHC.Base.Void) => Data.HFunctor.Inject (Data.HFunctor.Route.Pre a)
+ Data.HFunctor.Route: instance (a GHC.Types.~ GHC.Base.Void) => Data.HFunctor.Interpret.Interpret (Data.HFunctor.Route.Pre a) f
- Data.Functor.Combinator: data ( (f :: k -> Type) :+: (g :: k -> Type) ) (p :: k)
+ Data.Functor.Combinator: data () => ( (f :: k -> Type) :+: (g :: k -> Type) ) (p :: k)
- Data.Functor.Combinator: data Alt (f :: Type -> Type) a
+ Data.Functor.Combinator: data () => Alt (f :: Type -> Type) a
- Data.Functor.Combinator: data Ap (f :: Type -> Type) a
+ Data.Functor.Combinator: data () => Ap (f :: Type -> Type) a
- Data.Functor.Combinator: data Coyoneda (f :: Type -> Type) a
+ Data.Functor.Combinator: data () => Coyoneda (f :: Type -> Type) a
- Data.Functor.Combinator: data Day (f :: Type -> Type) (g :: Type -> Type) a
+ Data.Functor.Combinator: data () => Day (f :: Type -> Type) (g :: Type -> Type) a
- Data.Functor.Combinator: data EnvT e (w :: Type -> Type) a
+ Data.Functor.Combinator: data () => EnvT e (w :: Type -> Type) a
- Data.Functor.Combinator: data Lift (f :: Type -> Type) a
+ Data.Functor.Combinator: data () => Lift (f :: Type -> Type) a
- Data.Functor.Combinator: data These1 (f :: Type -> Type) (g :: Type -> Type) a
+ Data.Functor.Combinator: data () => These1 (f :: Type -> Type) (g :: Type -> Type) a
- Data.Functor.Combinator: data V1 (p :: k)
+ Data.Functor.Combinator: data () => V1 (p :: k)
- Data.Functor.Combinator: decideN :: Decide f => NP f (a : as) -> f (NS I (a : as))
+ Data.Functor.Combinator: decideN :: Decide f => NP f (a ': as) -> f (NS I (a ': as))
- Data.Functor.Combinator: newtype ComposeT (f :: Type -> Type -> Type -> Type) (g :: Type -> Type -> Type -> Type) (m :: Type -> Type) a
+ Data.Functor.Combinator: newtype () => ComposeT (f :: Type -> Type -> Type -> Type) (g :: Type -> Type -> Type -> Type) (m :: Type -> Type) a
- Data.Functor.Combinator: newtype IdentityT (f :: k -> Type) (a :: k)
+ Data.Functor.Combinator: newtype () => IdentityT (f :: k -> Type) (a :: k)
- Data.Functor.Combinator: newtype ReaderT r (m :: Type -> Type) a
+ Data.Functor.Combinator: newtype () => ReaderT r (m :: Type -> Type) a
- Data.Functor.Invariant.Inplicative: gatherN1 :: forall f a as b. (Inply f, IsoXRec Identity as, RecordCurry as) => Curried (a : as) b -> (b -> XRec Identity (a : as)) -> CurriedF f (a : as) (f b)
+ Data.Functor.Invariant.Inplicative: gatherN1 :: forall f a as b. (Inply f, IsoXRec Identity as, RecordCurry as) => Curried (a ': as) b -> (b -> XRec Identity (a ': as)) -> CurriedF f (a ': as) (f b)
- Data.Functor.Invariant.Inplicative: gatheredN1 :: Inply f => NP f (a : as) -> f (NP I (a : as))
+ Data.Functor.Invariant.Inplicative: gatheredN1 :: Inply f => NP f (a ': as) -> f (NP I (a ': as))
- Data.Functor.Invariant.Inplicative: gatheredN1Map :: Inplicative f => (NP I (a : as) -> b) -> (b -> NP I (a : as)) -> NP f (a : as) -> f b
+ Data.Functor.Invariant.Inplicative: gatheredN1Map :: Inplicative f => (NP I (a ': as) -> b) -> (b -> NP I (a ': as)) -> NP f (a ': as) -> f b
- Data.Functor.Invariant.Inplicative: gatheredN1MapRec :: Inplicative f => (XRec Identity (a : as) -> b) -> (b -> XRec Identity (a : as)) -> Rec f (a : as) -> f b
+ Data.Functor.Invariant.Inplicative: gatheredN1MapRec :: Inplicative f => (XRec Identity (a ': as) -> b) -> (b -> XRec Identity (a ': as)) -> Rec f (a ': as) -> f b
- Data.Functor.Invariant.Inplicative: gatheredN1Rec :: Inply f => Rec f (a : as) -> f (XRec Identity (a : as))
+ Data.Functor.Invariant.Inplicative: gatheredN1Rec :: Inply f => Rec f (a ': as) -> f (XRec Identity (a ': as))
- Data.Functor.Invariant.Inplicative.Free: assembleDivAp1 :: Invariant f => NP f (a : as) -> DivAp1 f (NP I (a : as))
+ Data.Functor.Invariant.Inplicative.Free: assembleDivAp1 :: Invariant f => NP f (a ': as) -> DivAp1 f (NP I (a ': as))
- Data.Functor.Invariant.Inplicative.Free: assembleDivAp1Rec :: Invariant f => Rec f (a : as) -> DivAp1 f (XRec Identity (a : as))
+ Data.Functor.Invariant.Inplicative.Free: assembleDivAp1Rec :: Invariant f => Rec f (a ': as) -> DivAp1 f (XRec Identity (a ': as))
- Data.Functor.Invariant.Internative: swervedN1 :: Inalt f => NP f (a : as) -> f (NS I (a : as))
+ Data.Functor.Invariant.Internative: swervedN1 :: Inalt f => NP f (a ': as) -> f (NS I (a ': as))
- Data.Functor.Invariant.Internative: swervedN1Map :: Inalt f => (NS I (a : as) -> b) -> (b -> NS I (a : as)) -> NP f (a : as) -> f b
+ Data.Functor.Invariant.Internative: swervedN1Map :: Inalt f => (NS I (a ': as) -> b) -> (b -> NS I (a ': as)) -> NP f (a ': as) -> f b
- Data.Functor.Invariant.Internative.Free: assembleDecAlt1 :: Invariant f => NP f (a : as) -> DecAlt1 f (NS I (a : as))
+ Data.Functor.Invariant.Internative.Free: assembleDecAlt1 :: Invariant f => NP f (a ': as) -> DecAlt1 f (NS I (a ': as))
Files
- CHANGELOG.md +9/−0
- functor-combinators.cabal +3/−3
- src/Data/Functor/Contravariant/Conclude.hs +6/−1
- src/Data/Functor/Contravariant/Decide.hs +8/−3
- src/Data/Functor/Contravariant/Divise.hs +10/−5
- src/Data/Functor/Invariant/Inplicative.hs +7/−2
CHANGELOG.md view
@@ -1,6 +1,15 @@ Changelog ========= +Version 0.4.1.3+---------------++*January 9, 2024*++<https://github.com/mstksg/functor-combinators/releases/tag/v0.4.1.3>++* Compatibility with transformers 0.6, and therefore ghc 9.6 (#7)+ Version 0.4.1.2 ---------------
functor-combinators.cabal view
@@ -7,7 +7,7 @@ -- hash: c98f05061d45352f630dd964c7671a2a414e5708a12f8f4f8a39d61b986f6f5d name: functor-combinators-version: 0.4.1.2+version: 0.4.1.3 synopsis: Tools for functor combinator-based program design description: Tools for working with /functor combinators/: types that take functors (or other indexed types) and returns a new functor that "enhances" or "mixes"@@ -79,7 +79,7 @@ Data.HBifunctor.Tensor.Internal hs-source-dirs: src- default-extensions: AllowAmbiguousTypes ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DerivingStrategies EmptyCase ExistentialQuantification ExplicitNamespaces FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses OverloadedStrings PatternSynonyms QuantifiedConstraints RankNTypes ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeInType TypeOperators UndecidableInstances UndecidableSuperClasses ViewPatterns+ default-extensions: AllowAmbiguousTypes ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DerivingStrategies EmptyCase ExistentialQuantification ExplicitNamespaces FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses OverloadedStrings PatternSynonyms QuantifiedConstraints RankNTypes ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies PolyKinds TypeOperators UndecidableInstances UndecidableSuperClasses ViewPatterns ghc-options: -Wall -Wcompat -Wredundant-constraints -Werror=incomplete-patterns build-depends: StateVar@@ -121,7 +121,7 @@ Paths_functor_combinators hs-source-dirs: test- default-extensions: AllowAmbiguousTypes ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DerivingStrategies EmptyCase ExistentialQuantification ExplicitNamespaces FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses OverloadedStrings PatternSynonyms QuantifiedConstraints RankNTypes ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeInType TypeOperators UndecidableInstances UndecidableSuperClasses ViewPatterns+ default-extensions: AllowAmbiguousTypes ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DerivingStrategies EmptyCase ExistentialQuantification ExplicitNamespaces FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses OverloadedStrings PatternSynonyms QuantifiedConstraints RankNTypes ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies PolyKinds TypeOperators UndecidableInstances UndecidableSuperClasses ViewPatterns ghc-options: -Wall -Wcompat -Wredundant-constraints -Werror=incomplete-patterns -threaded -rtsopts -with-rtsopts=-N build-depends: base >=4.12 && <5
src/Data/Functor/Contravariant/Conclude.hs view
@@ -24,7 +24,6 @@ import Control.Applicative.Backwards import Control.Monad.Trans.Identity-import Control.Monad.Trans.List import Control.Monad.Trans.Maybe import qualified Control.Monad.Trans.RWS.Lazy as Lazy import qualified Control.Monad.Trans.RWS.Strict as Strict@@ -67,6 +66,10 @@ import GHC.Generics #endif +#if !MIN_VERSION_transformers(0,6,0)+import Control.Monad.Trans.List+#endif+ -- | The contravariant analogue of 'Data.Functor.Plus.Plus'. Adds on to -- 'Decide' the ability to express a combinator that rejects all input, to -- act as the dead-end. Essentially 'Decidable' without a superclass@@ -160,8 +163,10 @@ instance Conclude m => Conclude (Strict.RWST r w s m) where conclude f = Strict.RWST $ \_ _ -> contramap (\(a, _, _) -> a) (conclude f) +#if !MIN_VERSION_transformers(0,6,0) instance (Divisible m, Divise m) => Conclude (ListT m) where conclude _ = ListT conquer+#endif instance (Divisible m, Divise m) => Conclude (MaybeT m) where conclude _ = MaybeT conquer
src/Data/Functor/Contravariant/Decide.hs view
@@ -23,12 +23,9 @@ ) where import Control.Applicative.Backwards-import Control.Arrow import Control.Monad.Trans.Identity-import Control.Monad.Trans.List import Control.Monad.Trans.Maybe import Control.Monad.Trans.Reader-import Data.Either import Data.Functor.Apply import Data.Functor.Compose import Data.Functor.Contravariant@@ -62,6 +59,12 @@ import GHC.Generics #endif +#if !MIN_VERSION_transformers(0,6,0)+import Control.Monad.Trans.List+import Control.Arrow+import Data.Either+#endif+ -- | The contravariant analogue of 'Alt'. -- -- If one thinks of @f a@ as a consumer of @a@s, then 'decide' allows one@@ -144,8 +147,10 @@ (abc a)) (rsmb r s) (rsmc r s) +#if !MIN_VERSION_transformers(0,6,0) instance Divise m => Decide (ListT m) where decide f (ListT l) (ListT r) = ListT $ divise ((lefts &&& rights) . map f) l r+#endif instance Divise m => Decide (MaybeT m) where decide f (MaybeT l) (MaybeT r) = MaybeT $
src/Data/Functor/Contravariant/Divise.hs view
@@ -26,10 +26,8 @@ import Control.Applicative import Control.Applicative.Backwards import Control.Arrow-import Control.Monad.Trans.Error import Control.Monad.Trans.Except import Control.Monad.Trans.Identity-import Control.Monad.Trans.List import Control.Monad.Trans.Maybe import Control.Monad.Trans.Reader import Data.Deriving@@ -72,6 +70,11 @@ import GHC.Generics #endif +#if !MIN_VERSION_transformers(0,6,0)+import Control.Monad.Trans.Error+import Control.Monad.Trans.List+#endif+ -- | The contravariant analogue of 'Apply'; it is -- 'Divisible' without 'conquer'. --@@ -198,17 +201,19 @@ instance Divise f => Divise (Backwards f) where divise f (Backwards l) (Backwards r) = Backwards $ divise f l r -instance Divise m => Divise (ErrorT e m) where- divise f (ErrorT l) (ErrorT r) = ErrorT $ divise (funzip . fmap f) l r- instance Divise m => Divise (ExceptT e m) where divise f (ExceptT l) (ExceptT r) = ExceptT $ divise (funzip . fmap f) l r instance Divise f => Divise (IdentityT f) where divise f (IdentityT l) (IdentityT r) = IdentityT $ divise f l r +#if !MIN_VERSION_transformers(0,6,0)+instance Divise m => Divise (ErrorT e m) where+ divise f (ErrorT l) (ErrorT r) = ErrorT $ divise (funzip . fmap f) l r+ instance Divise m => Divise (ListT m) where divise f (ListT l) (ListT r) = ListT $ divise (funzip . map f) l r+#endif instance Divise m => Divise (MaybeT m) where divise f (MaybeT l) (MaybeT r) = MaybeT $ divise (funzip . fmap f) l r
src/Data/Functor/Invariant/Inplicative.hs view
@@ -45,10 +45,8 @@ import Control.Applicative.Lift (Lift(Pure, Other)) import Control.Arrow (Arrow) import Control.Monad.Trans.Cont (ContT)-import Control.Monad.Trans.Error (ErrorT(..)) import Control.Monad.Trans.Except (ExceptT(..)) import Control.Monad.Trans.Identity (IdentityT(..))-import Control.Monad.Trans.List (ListT(..)) import Control.Monad.Trans.Maybe (MaybeT(..)) import Control.Monad.Trans.RWS (RWST(..)) import Control.Monad.Trans.Reader (ReaderT(..))@@ -91,6 +89,11 @@ import qualified Data.Vinyl.Functor as V import qualified GHC.Generics as Generics +#if !MIN_VERSION_transformers(0,6,0)+import Control.Monad.Trans.Error+import Control.Monad.Trans.List+#endif+ -- | The invariant counterpart of 'Apply' and 'Divise'. -- -- Conceptually you can think of 'Apply' as, given a way to "combine" @a@ and@@ -302,6 +305,7 @@ instance Inplicative f => Inplicative (ExceptT e f) where knot x = ExceptT (knot (Right x)) +#if !MIN_VERSION_transformers(0,6,0) -- | @since 0.4.1.0 instance Inply f => Inply (ErrorT e f) where gather f g (ErrorT x) (ErrorT y) = ErrorT $@@ -317,6 +321,7 @@ -- | @since 0.4.1.0 instance Inplicative f => Inplicative (ListT f) where knot x = ListT (knot [x])+#endif -- | @since 0.4.1.0 deriving via WrappedFunctor (RWST r w s m) instance (Bind m, Invariant m, Semigroup w) => Inply (RWST r w s m)