Safe Haskell | Safe |
---|---|

Language | Haskell2010 |

# Documentation

Free group generated by a type `a`

. Internally it's represented by a list
`[Either a a]`

where inverse is given by:

inverse (FreeGroup [a]) = FreeGroup [either Right Left a]

It is a monad on a full subcategory of `Hask`

which constists of types which
satisfy the

constraint.`Eq`

## Instances

Monad FreeGroup Source # | |

Functor FreeGroup Source # | |

Applicative FreeGroup Source # | |

FreeAlgebra FreeGroup Source # | |

Defined in Data.Group.Free returnFree :: a -> FreeGroup a Source # foldMapFree :: (AlgebraType FreeGroup d, AlgebraType0 FreeGroup a) => (a -> d) -> FreeGroup a -> d Source # proof :: AlgebraType0 FreeGroup a => Proof (AlgebraType FreeGroup (FreeGroup a)) (FreeGroup a) Source # forget :: AlgebraType FreeGroup a => Proof (AlgebraType0 FreeGroup a) (FreeGroup a) Source # | |

Eq a => Eq (FreeGroup a) Source # | |

Ord a => Ord (FreeGroup a) Source # | |

Defined in Data.Group.Free | |

Show a => Show (FreeGroup a) Source # | |

Eq a => Semigroup (FreeGroup a) Source # | |

Eq a => Monoid (FreeGroup a) Source # | |

Eq a => Group (FreeGroup a) Source # | |

type AlgebraType0 FreeGroup (a :: *) Source # | |

Defined in Data.Group.Free | |

type AlgebraType FreeGroup (g :: *) Source # | |

Defined in Data.Group.Free |