import * as DSL from "../DSL"; import type * as O from "../Option"; import { isOption } from "../support/utils"; import { Monad } from "./monad"; const adapter: { (_: O.Option): DSL.GenHKT, A>; (_: ReadonlyArray): DSL.GenHKT, A>; } = (_: any) => { if (isOption(_)) { return new DSL.GenHKT(_._tag === "None" ? [] : [_.value]); } return new DSL.GenHKT(_); }; export const gen = DSL.genWithHistoryF(Monad, { adapter });