monads-co
Version:
An implementation of Haskell's type classes in TS
10 lines (8 loc) • 342 B
text/typescript
import { Applicative, ApplicativeHKT } from './Applicative'
import { CallHKT } from './HKT'
export interface MonadHKT extends ApplicativeHKT {
output: Monad<this["input"]>
}
export abstract class Monad<A> extends Applicative<A> {
abstract then<B, Mon extends MonadHKT>(mapping: (value: A) => CallHKT<Mon, B>): CallHKT<Mon, B>
}