什么是monad命名约定?

时间:2012-02-27 00:32:28

标签: haskell monads

似乎Haskell已经围绕monad建立了几个命名约定。

示例:

  • T附加到最后以获取monad变换器的名称(例如Reader - > ReaderT
  • 使用runXXX执行monad计算(例如runSTrunReader
  • liftXXX了解XXX
  • 的各种值

是否有其他命名约定?

1 个答案:

答案 0 :(得分:14)

  • runX m其中m :: X a将运行X monad并返回“副作用”以及monad结果a

    < / LI>
  • evalX m将运行计算并返回结果a

  • execX m将运行计算并返回“副作用”但不返回结果。

  • 电梯有各种各样的风格,对我来说,想要在SO答案中解释它们可能有点太棘手。您应该知道liftliftIO,并了解/最终找出其他变体,例如liftWithliftBaseWith。例如,请参阅EZYang关于该主题的帖子。

  • 在monad名称暗示变换后附加T。在函数名后附加M表示它是monadic。附加_表示结果被忽略。

  • 所有其他后缀字母均表示“使用hoogle”。