/** * Monoid * * 1. m.concat(M.empty()) is equivalent to m (right identity) * 2. M.empty().concat(m) is equivalent to m (left identity) * * empty :: Monoid m => () -> m */ import { HKT, KindOf, URIS } from './HKT'; import { Semigroup, Semigroup1, Semigroup2 } from './Semigroup'; export interface Monoid extends Semigroup { readonly empty: () => HKT; } export interface Monoid1 extends Semigroup1 { readonly empty: () => KindOf; } export interface Monoid2 extends Semigroup2 { readonly empty: () => KindOf; }