They are slow.
They produce boilerplate.
They require functors. Functors can’t be composed.
They require interpreters. Interpreters can’t be composed.
So FMs can’t be composed."
These statements are all wrong or completely misleading.
1/
2/
3/
4/
5/
- Normal Form F. M. (O(n^2) binding)
- Church Encoded F. M. (O(n) binding, as fast as Final Tagless)
- “No remorse” F. M. (used in PureScript, as fast as FT)
- some more.
6/
7/
8/
Church Encoded Free Monads are completely fine. In my Hydra project, I demonstrated that they are as fast as FT.
9/
10/
11/
12/
Well yes, so?
There is nothing about the Expression Problem in my work contract. We solve business problems we’re paid for. If the goal is achieved, why should we bother about the Expression Problem?
13/
14/
Well yes… but actually no. This “boilerplate” should be written once and then stays untouched the whole lifecycle of the application.
15/
16/
17/
Boilerplate is a situation that makes you to write the same code again and again in your day-to-day practice.
Boilerplate is the code that interferes with refactoring.
18/
19/
No, Free Monads are awesome.
/20