import { pipe } from './function'; import { getFunctorComposition, map } from './Functor'; import { getLeft, getRight } from './Option'; import * as S from './Separated'; export function compact(F, G) { return function (fga) { return F.map(fga, G.compact); }; } export function separate(F, C, G) { var _compact = compact(F, C); var _map = map(F, G); return function (fge) { return S.separated(_compact(pipe(fge, _map(getLeft))), _compact(pipe(fge, _map(getRight)))); }; } /** @deprecated */ export function getCompactableComposition(F, G) { var map = getFunctorComposition(F, G).map; return { map: map, compact: compact(F, G), separate: separate(F, G, G) }; }