It seems that Haskell has established several naming conventions around monads.
Examples:
T
to the end to obtain the name of the mon
runX m
where m :: X a
will run the X
monad and return the "side effect" along with the monad result, a
.
evalX m
will run the computation and return the result, a
.
execX m
will run the computation and return the "side effect" but not the result.
The lifts come in various flavors that can be a bit too tricky for me to want to explain them in a SO answer. You should probably know lift
and liftIO
and be aware of / eventually seek out the other variants such as liftWith
and liftBaseWith
. See, for example, EZYang's posting on the topic.
appending a T
after the monad name implies transformer. Appending an M
after a function name implies it is monadic. Appending an _
implies the result is ignored.
All other suffixed letters mean "use hoogle".