arrow-core / arrow.core.extensions / OptionMonad / tailRecM
open fun <A, B> tailRecM(a: A, f: (A) -> OptionOf<Either<A, B>>): Option<B>
Do you like Arrow?