monoid-extras-0.4.1: Various extra monoid-related definitions and utilities

Safe HaskellSafe
LanguageHaskell2010

Data.Monoid.SemiDirectProduct.Strict

Description

A strict version of the semi-direct product. If a monoid m acts on s then this version of the semi-direct product is strict in the m-portion of the semi-direct product.

Synopsis

Documentation

data Semi s m Source #

The semi-direct product of monoids s and m. When the monoid m acts on the monoid s, this type acquires a monoid structure. We call the monoid m the quotient monoid and the monoid s the sub-monoid of the semi-direct product. The semi-direct product Semi s m is an extension of the monoid s with m being the quotient.

Instances

(Monoid m, Monoid s, Action m s) => Monoid (Semi s m) Source # 

Methods

mempty :: Semi s m #

mappend :: Semi s m -> Semi s m -> Semi s m #

mconcat :: [Semi s m] -> Semi s m #

quotient :: Semi s m -> m Source #

The quotient map.

inject :: Monoid m => s -> Semi s m Source #

The injection map.

embed :: Monoid s => m -> Semi s m Source #

The semi-direct product gives a split extension of s by m. This allows us to embed m into the semi-direct product. This is the embedding map. The quotient and embed maps should satisfy the equation quotient . embed = id.