With naked values you don't have composition when ...
# functional
r
With naked values you don't have composition when sequencing over the effect that been chained by multiple calls to flatMap. Is not clear either how you deffer evaluation. I think
bind/yields
is present just for async computation in coroutines with
async/await
. The equivalent thing here is that how would you implement async/await with naked values? Each monad has a different complexity in relation to the effect they model in this case Async. Other monads model absence, N effects. When all those effects are implemented with naked values they all are implemented in a different way and requires concrete implementations which may be desirable or not based on optimizations. There is room for mutability in pragmatic FP. But I think the idea here is that FP offers a unified programming model for everything where you can express those high level concerns of computing over Effects in the same way for all monads.