gluon 0.13.1

A static, type inferred programming language for application embedding
Documentation
//@NO-IMPLICIT-PRELUDE
//! Implementation of the `Group` type

let { Monoid } = import! std.monoid

/// `Group a` represents an monoid an which has an inverse element. This means
/// the following additional laws must hold:
///
/// * `forall x . append (inverse x) x = empty = append x (inverse x)`
#[implicit]
type Group a = {
    monoid : Monoid a,
    /// The inverse operation
    inverse : a -> a
}

{
    Group
}