import type { AltMin } from './Alt' import type { ApplicativeMin } from './Applicative' import type { Nil, NilMin } from './Nil' import { Alt } from './Alt' import { Applicative } from './Applicative' import * as HKT from './HKT' export interface Alternative extends Applicative, Nil, Alt {} export type AlternativeMin = ApplicativeMin & AltMin & NilMin export function Alternative(F: AlternativeMin): Alternative { return HKT.instance>({ ...Applicative(F), ...Alt(F), nil: F.nil }) }