1. Ability to quickly translate programs into othe...
# arrow
r
1. Ability to quickly translate programs into other programs meaning transforming one set of values on an ADT (sealed classes) to another and therfore transforming a language into another. 2. Stack safety by default because on interpretation
foldMap
reduces the free structure by calling
Monad#tailRecM
which is a contract in which by every monad guarantees that you can flatMap in a stack safe way