So Real World Haskell says:
Every monad transformer is an instance of MonadTrans
but I'm playing with Scotty and found out that its base monad transformer ScottyT is not an instance of MonadTrans.
Looking at the release notes it seems that it is a deliberate design decision: here. Quote:
The monad parameters to ScottyT have been decoupled, causing the type of the ScottyT constructor to change. As a result, ScottyT is no longer a MonadTrans instance ...
I hope you understand my confusion. Nevertheless, I will try to formulate strict questions:
- Why would one not want a monad transformer to be an instance of
MonadTrans? - How would you explain the aforementioned change in ScottyT design?
P.S.: I do understand that I can define an instance of MonadTrans ScottyT myself, but should I? (links back to questions)