protobuf-0.1.3: Google Protocol Buffers via GHC.Generics

Safe HaskellSafe-Inferred

Data.ProtocolBuffers.Orphans

Description

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

Synopsis

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