所有的单子命名惯例是什么?

15
似乎Haskell在monad周围建立了几个命名约定。
例如:
  • T添加到末尾以获得monad transformer的名称(例如,Reader-> ReaderT
  • 使用runXXX执行monad计算(例如runSTrunReader
  • liftXXX用于各种值的XXX
还有其他命名约定吗?
1个回答

14
  • runX m 其中 m :: X a 将运行 X monad 并返回 "side effect" 以及 monad 结果 a

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

  • execX m 将运行计算并返回 "side effect" 但不返回结果。

  • 这些lifts有各种各样的变体,对我来说可能有点棘手,不想在SO答案中解释它们。您应该了解 liftliftIO,并意识到/最终寻找其他变体,例如 liftWithliftBaseWith。例如,请参见EZYang关于此主题的文章。

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

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



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接