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 });