export interface Callable { (...args: Array): T; } export interface Supplier extends Callable { (): T; } export interface Mapper extends Callable { (t: T): U; } export interface Predicate extends Mapper {} export interface BiMapper extends Callable { (t: T, u: U): R; } export interface SideEffect extends Mapper {} export interface BiSideEffect extends BiMapper {}