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
.