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)
ScottyT
a monad transformer if it isn't an instance ofMonadTrans
?" – TelestichTechnically, this is all we need; however, it is convenient to make MaybeT an instance of a few other classes
– Tantamount