| Safe Haskell | Trustworthy |
|---|
Generics.Deriving.Monoid
Contents
Description
This module provides two main features:
-
GMonoid, a generic version of theMonoidtype class, including instances of the types from Data.Monoid - Default generic definitions for the
Monoidmethodsmemptyandmappend
The generic defaults only work for types without alternatives (i.e. they have only one constructor). We cannot in general know how to deal with different constructors.
- class GMonoid a where
- gmemptydefault :: (Generic a, GMonoid' (Rep a)) => a
- gmappenddefault :: (Generic a, GMonoid' (Rep a)) => a -> a -> a
- class GMonoid' f where
- memptydefault :: (Generic a, Monoid' (Rep a)) => a
- mappenddefault :: (Generic a, Monoid' (Rep a)) => a -> a -> a
- class Monoid' f where
GMonoid type class
class GMonoid a where
Methods
gmempty :: a
Generic mempty
gmappend :: a -> a -> a
Generic mappend
gmconcat :: [a] -> a
Generic mconcat
Instances
| GMonoid Ordering | |
| GMonoid () | |
| GMonoid Any | |
| GMonoid All | |
| GMonoid [a] | |
| GMonoid a => GMonoid (Maybe a) | |
| Num a => GMonoid (Sum a) | |
| Num a => GMonoid (Product a) | |
| GMonoid (Endo a) | |
| GMonoid a => GMonoid (Dual a) | |
| GMonoid (Last a) | |
| GMonoid (First a) | |
| GMonoid a => GMonoid (Down a) | |
| GMonoid b => GMonoid (a -> b) | |
| (GMonoid a, GMonoid b) => GMonoid (a, b) | |
| GMonoid a => GMonoid (Const a b) | |
| (GMonoid a, GMonoid b, GMonoid c) => GMonoid (a, b, c) | |
| (GMonoid a, GMonoid b, GMonoid c, GMonoid d) => GMonoid (a, b, c, d) | |
| (GMonoid a, GMonoid b, GMonoid c, GMonoid d, GMonoid e) => GMonoid (a, b, c, d, e) | |
| (GMonoid a, GMonoid b, GMonoid c, GMonoid d, GMonoid e, GMonoid f) => GMonoid (a, b, c, d, e, f) | |
| (GMonoid a, GMonoid b, GMonoid c, GMonoid d, GMonoid e, GMonoid f, GMonoid g) => GMonoid (a, b, c, d, e, f, g) | |
| (GMonoid a, GMonoid b, GMonoid c, GMonoid d, GMonoid e, GMonoid f, GMonoid g, GMonoid h) => GMonoid (a, b, c, d, e, f, g, h) |
Default definitions
GMonoid
gmemptydefault :: (Generic a, GMonoid' (Rep a)) => a
gmappenddefault :: (Generic a, GMonoid' (Rep a)) => a -> a -> a
Internal auxiliary class for GMonoid
class GMonoid' f where
Monoid
These functions can be used in a Monoid instance. For example:
-- LANGUAGE DeriveGeneric
import Generics.Deriving.Base (Generic)
import Generics.Deriving.Monoid
data T a = C a (Maybe a) deriving Generic
instance Monoid a => Monoid (T a) where
mempty = memptydefault
mappend = mappenddefault
memptydefault :: (Generic a, Monoid' (Rep a)) => a
mappenddefault :: (Generic a, Monoid' (Rep a)) => a -> a -> a
Internal auxiliary class for Monoid
class Monoid' f where
The Monoid module
This is exported for convenient access to the various wrapper types.