Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
This module provides two main features:
GMonoid
, a generic version of theMonoid
type class, including instances of the types from Data.Monoid
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
- memptydefault :: (Generic a, Monoid' (Rep a)) => a
- mappenddefault :: (Generic a, Monoid' (Rep a)) => a -> a -> a
- module Data.Monoid
GMonoid type class
Nothing
GMonoid Ordering | |
GMonoid () | |
GMonoid All | |
GMonoid Any | |
GMonoid [a] | |
GMonoid a => GMonoid (Dual a) | |
GMonoid (Endo a) | |
Num a => GMonoid (Sum a) | |
Num a => GMonoid (Product a) | |
GMonoid (First a) | |
GMonoid (Last a) | |
GMonoid a => GMonoid (Maybe a) | |
GMonoid b => GMonoid (a -> b) | |
(GMonoid a, GMonoid b) => GMonoid (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 Source
gmappenddefault :: (Generic a, GMonoid' (Rep a)) => a -> a -> a Source
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 Source
mappenddefault :: (Generic a, Monoid' (Rep a)) => a -> a -> a Source
The Monoid module
This is exported for convenient access to the various wrapper types.
module Data.Monoid