I’m struggling to understand what’s the point of Eval
.
On the JVM we have the issue of stack-safety, and when working over
F
, or wrappers, you cannot use
tailrec
. So we there is a need to resort to special tricks to make wrappers stack-safe.
Originally the point of
Eval
was to create stack-safe implementations of
Traverse
, but we have since then overcome this need and found simpler solutions.
I.e. we can use
tailrec
with
suspend
, and you can use
bind
with
Iterable#map
etc. So the need for
Eval
has kind-of disappeared within the use-case of
wrappers
.
The Kotlin Std has since then also added
DeepRecursiveFunction
which when we originally had
Eval
did not exist.