monads-co
Version:
An implementation of Haskell's type classes in TS
13 lines (10 loc) • 313 B
text/typescript
import { CallHKT, HKT } from './HKT'
export interface FunctorHKT extends HKT {
output: Functor<this["input"]>
}
export abstract class Functor<A> {
abstract map<B, Fun extends FunctorHKT>(mapping: (value: A) => B): CallHKT<Fun, B>
replaceA<B>(value: B) {
return this.map(() => value)
}
}