/** * Alternative * * 1. x.ap(f.alt(g)) is equivalent to x.ap(f).alt(x.ap(g)) (distributivity) * 2. x.ap(A.zero()) is equivalent to A.zero() (annihilation) */ import { Applicative, Applicative1, Applicative2 } from './Applicative'; import { URIS } from './HKT'; import { Plus, Plus1, Plus2 } from './Plus'; export interface Alternative extends Plus, Applicative { } export interface Alternative1 extends Plus1, Applicative1 { } export interface Alternative2 extends Plus2, Applicative2 { }