似乎Haskell已经围绕monad建立了几个命名约定。
示例:
T
附加到最后以获取monad变换器的名称(例如Reader
- > ReaderT
)runXXX
执行monad计算(例如runST
,runReader
)liftXXX
了解XXX
是否有其他命名约定?
答案 0 :(得分:14)
runX m
其中m :: X a
将运行X
monad并返回“副作用”以及monad结果a
。
evalX m
将运行计算并返回结果a
。
execX m
将运行计算并返回“副作用”但不返回结果。
电梯有各种各样的风格,对我来说,想要在SO答案中解释它们可能有点太棘手。您应该知道lift
和liftIO
,并了解/最终找出其他变体,例如liftWith
和liftBaseWith
。例如,请参阅EZYang关于该主题的帖子。
在monad名称暗示变换后附加T
。在函数名后附加M
表示它是monadic。附加_
表示结果被忽略。
所有其他后缀字母均表示“使用hoogle”。