2012-02-27 118 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