2012-02-27 100 views
13

Haskell似乎已经围绕单子建立了几个命名约定。monad命名约定是什么?

实例:

  • 附加T到结束以获得单子变压器的名称 - 使用runXXX执行单子计算(例如Reader>ReaderT
  • (例如runSTrunReader
  • liftXXX各种数值的XXX

是否有其他命名约定?

回答

13
  • runX m其中m :: X a将运行X单子,并返回与单子结果,a沿着“副作用”。

  • evalX m将运行计算并返回结果a

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

  • 电梯有各种口味,对我来说可能有点棘手,想要在SO回答中解释它们。您应该可能知道liftliftIO,并知道/最终找出其他变体,如liftWithliftBaseWith。例如,请参阅EZYang发布的主题。

  • 在monad名称隐含变换后追加T。在函数名称后面附加M意味着它是一次性的。附加_意味着结果被忽略。

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

+7

作为短编http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Monad.html#g:2介绍几个与组合子的命名规则关于什么时候M后缀与m前缀相对应是合适的。 – 2012-02-27 05:22:48

相关问题