monoid-absorbing-0.1.0.4: A library for (left, right) zero monoids and backtracking with cut

Copyright(c) 2015 Maciej Piróg
LicenseMIT
Maintainermaciej.adam.pirog@gmail.com
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell98

Data.Monoid.Zero

Contents

Description

Typeclasses for monoids with (left, right, or "two-sided") zero elements (aka absorbing elements) and their free implementations. Just like monoids are related to backtracking computations, right zero monoids are related to backtracking computation with Prolog's cut operator (see the module Data.List.Cut).

Synopsis

Zero monoids

class Monoid m => MonoidZero m where Source

Class of zero monoids. Instances should satisfy:

Methods

zero :: m Source

Left zero monoids

class Monoid m => MonoidLZero m where Source

Class of left zero monoids. Instances should satisfy:

Methods

lzero :: m Source

newtype AdjoinLZero m Source

A left zero monoid freely generated by a monoid.

Constructors

AdjoinLZero 

Fields

unAdjoinLZero :: (Bool, m)
 

Right zero monoids

class Monoid m => MonoidRZero m where Source

Class of right zero monoids. Instances should satisfy:

Methods

rzero :: m Source

newtype AdjoinRZero m Source

A right zero monoid freely generated by a monoid.

Constructors

AdjoinRZero 

Fields

unAdjoinRZero :: (m, Bool)