import * as P from "@tsplus/stdlib/prelude/ChainRec" /** * @tsplus static Either.Ops ChainRec */ export const ChainRec = HKT.instance>({ chainRec: (f: (a: A) => Either>) => (a: A): Either => P.ChainRec.tailRec>, Either>(f(a), (either) => either.isLeft() ? Either.right(Either.left(either.left)) : either.right.isLeft() ? Either.left(f(either.right.left)) : Either.right(Either.right(either.right.right))) })