import { Applicative } from "@siteimprove/alfa-applicative" ; import { Functor } from "@siteimprove/alfa-functor" ; import { Mapper } from "@siteimprove/alfa-mapper" ; public export interface Monad < T > extends Functor < T > , Applicative < T > { map < U > ( mapper ) : Monad < U > ; apply < U > ( mapper ) : Monad < U > ; flatMap < U > ( mapper ) : Monad < U > ; flatten < T > ( this ) : Monad < T > ; }