import { Apply } from './apply' import { $, HKT, kind } from '.' export interface FlatMap extends Apply { flatMap(f: (a: A) => $, fb: $): $ } export type FlatMapInstances = keyof typeof FlatMap export namespace FlatMap { const __name = "FlatMap" } export function flatMap(f: (a: A) => $, fa: $): $ { return (FlatMap[kind(fa)] as FlatMap).flatMap(f, fa) }