I learned recently from @natefaubion that
base Monads like
Trampoline
, orAff
, are always stack safe, even if you aren’t usingMonadRec
.
What other base monads will always cause the whole monad transformer stack to be stack-safe?
Will Aff
accumulate heap memory during a monadic computation?
Why is it possible to write an Aff
which is an always-stack-safe base monad, but not possible to write Effect
as an always-stack-safe base monad? It looks like stack-safe Effect
has been attempted before by @safareli https://github.com/purescript/purescript-effect/pull/12
(Jordan’s reference has good material on stack safety. Explicit TCO - PureScript: Jordan's Reference )