Copyright | (C) 2011-2015 Edward Kmett |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Synopsis
- class ( Foldable1 t, Traversable t) => Traversable1 t where
- traverse1Maybe :: ( Traversable t, Apply f) => (a -> f b) -> t a -> MaybeApply f (t b)
- foldMap1Default :: ( Traversable1 f, Semigroup m) => (a -> m) -> f a -> m
Documentation
class ( Foldable1 t, Traversable t) => Traversable1 t where Source #
Instances
Defining Traversable1 instances
Defining
Traversable1
instances for types with both
Traversable1
and
Traversable
substructures can be done with
traverse1Maybe
,
(<*.>)
, and
(<.*>)
.
data Foo a = Foo (Maybe a) (Maybe a) a [a] deriving (Functor, Traversable, Foldable) instance Traversable1 Foo where traverse1 f (Foo ma ma' a as) = Foo <$> traverseMaybe ma <*> traverseMaybe ma' <*.> f a <.*> traverseMaybe as instance Foldable1 Foo where foldMap1 = foldMap1Default
traverse1Maybe :: ( Traversable t, Apply f) => (a -> f b) -> t a -> MaybeApply f (t b) Source #
Traverse a
Traversable
using
Apply
, getting the results back in a
MaybeApply
.
Default superclass instance helpers
foldMap1Default :: ( Traversable1 f, Semigroup m) => (a -> m) -> f a -> m Source #
Default implementation of
foldMap1
given an implementation of
Traversable1
.