/** * Monad * * 1. M.of(a).chain(f) is equivalent to f(a) (left identity) * 2. m.chain(M.of) is equivalent to m (right identity) */ import { Applicative, Applicative1, Applicative2 } from './Applicative'; import { Chain, Chain1, Chain2 } from './Chain'; import { URIS } from './HKT'; export interface Monad extends Applicative, Chain { } export interface Monad1 extends Applicative1, Chain1 { } export interface Monad2 extends Applicative2, Chain2 { }