Modulegeneric-data-1.1.0.2Haskell2010
Generic.Data.Internal.Traversable
Generic implementation of Foldable and Traversable.
There is already a naive implementation using the generic Rep's
own instances of Foldable and Traversable. However, deriving then
generates a lot of code that may not be simplified away by GHC,
that results in unnecessary run-time overhead.
In contrast, this implementation guarantees that the generated code is identical to stock-derived instances of Foldable and Traversable, which have the following syntactic properties:
constructors with zero fields use pure once;
constructors with one field use fmap once;
constructors with n >= 2 fields use liftA2 once and
(<*>)n-2 times.
The heavy lifting is actually done by the ap-normalize library.
- 4 types
- 6 classes
- 6 values
- Packagegeneric-data-1.1.0.2
- Exports16
- LanguageHaskell2010
- LicenceMIT
- SourceTraversable.hs
Library
7 declarationsGeneric traverse.
instance Traversable MyTypeF where
traverse = gtraverse
Class of generic representations for which Foldable can be derived.
Instances1GFoldable
GFoldable_ t => GFoldable tDefined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable
Class of generic representations for which Traversable can be derived.
Instances1GTraversable
GTraversable_ t => GTraversable tDefined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable
Internal definition of GFoldable.
Instances1GFoldable_
(GFoldMap t, Foldable t) => GFoldable_ tDefined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable
Internal definition of GTraversable.
Instances1GTraversable_
(GTraverse Kleisli t, GTraverse Equal t) => GTraversable_ tDefined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable
Foldable
Instances9GFoldMap, …
GFoldMap Par1Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableGFoldMap U1Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableGFoldMap V1Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableFoldable t => GFoldMap (Rec1 t)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableGFoldMap (K1 i a)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable(GFoldMap f, GFoldMap g) => GFoldMap (f :*: g)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable(GFoldMap f, GFoldMap g) => GFoldMap (f :+: g)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableGFoldMap f => GFoldMap (M1 i c f)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable(Foldable t, Foldable f) => GFoldMap (t :.: f)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable
Traversable
Instances3GTraverse
GTraverse Equal Par1Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableTraversable t => GTraverse Equal (Rec1 t)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable(Traversable t, Traversable f) => GTraverse Equal (t :.: f)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable
Constructors
Kleisli (a -> f b)
Instances3GTraverse
GTraverse Kleisli Par1Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableTraversable t => GTraverse Kleisli (Rec1 t)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable(Traversable t, Traversable f) => GTraverse Kleisli (t :.: f)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable
Methods
gtraverse_ :: Applicative f => arr f a b -> t a -> Aps f (t b)
Instances12GTraverse, …
GTraverse Equal Par1Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableGTraverse Kleisli Par1Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableGTraverse arr U1Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableGTraverse arr V1Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableTraversable t => GTraverse Equal (Rec1 t)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableTraversable t => GTraverse Kleisli (Rec1 t)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableGTraverse arr (K1 i a)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable(GTraverse arr f, GTraverse arr g) => GTraverse arr (f :*: g)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable(GTraverse arr f, GTraverse arr g) => GTraverse arr (f :+: g)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.TraversableGTraverse arr f => GTraverse arr (M1 i c f)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable(Traversable t, Traversable f) => GTraverse Equal (t :.: f)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable(Traversable t, Traversable f) => GTraverse Kleisli (t :.: f)Defined in generic-data-1.1.0.2 · Generic.Data.Internal.Traversable