| 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 |
Data.Semigroup.Traversable
Description
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.