Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Messages containing Optional
Enumeration
fields fail to encode.
This module contains orphan instances required to make these functional.
For more information reference the associated ticket: https://github.com/alphaHeavy/protobuf/issues/3
- class Foldable t
Documentation
class Foldable t
Data structures that can be folded.
Minimal complete definition: foldMap
or foldr
.
For example, given a data type
data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)
a suitable instance would be
instance Foldable Tree where foldMap f Empty = mempty foldMap f (Leaf x) = f x foldMap f (Node l k r) = foldMap f l `mappend` f k `mappend` foldMap f r
This is suitable even for abstract types, as the monoid is assumed
to satisfy the monoid laws. Alternatively, one could define foldr
:
instance Foldable Tree where foldr f z Empty = z foldr f z (Leaf x) = f x z foldr f z (Node l k r) = foldr f (f k (foldr f z r)) l