// ets_tracing: off import type { Either } from "@effect-ts/system/Either" import type * as HKT from "../HKT/index.js" export interface ChainRec { readonly chainRec: ( f: (a: A) => HKT.Kind> ) => (a: A) => HKT.Kind } export function tailRec(a: A, f: (a: A) => Either): B { let v = f(a) while (v._tag === "Left") { v = f(v.left) } return v.right }