/**
* Equivalent to a `Monoid`.
*
* @tsplus type AssociativeIdentity
*/
export interface AssociativeIdentity extends Associative {
readonly Law: Associative["Law"] & { readonly Identity: "Identity" }
readonly identity: A
}
/**
* @tsplus type AssociativeIdentity/Ops
*/
export interface AssociativeIdentityOps {
(identity: A, combine: (x: A, y: A) => A): AssociativeIdentity
}
export const AssociativeIdentity: AssociativeIdentityOps = (
identity: A,
combine: (x: A, y: A) => A
): AssociativeIdentity => HKT.instance({ identity, combine })