13
Haskell似乎已經圍繞單子建立了幾個命名約定。monad命名約定是什麼?
實例:
- 附加
T
到結束以獲得單子變壓器的名稱 - 使用runXXX
執行單子計算(例如Reader
>ReaderT
) - (例如
runST
,runReader
) liftXXX
各種數值的XXX
是否有其他命名約定?
Haskell似乎已經圍繞單子建立了幾個命名約定。monad命名約定是什麼?
實例:
T
到結束以獲得單子變壓器的名稱 - 使用runXXX
執行單子計算(例如Reader
>ReaderT
)runST
,runReader
)liftXXX
各種數值的XXX
是否有其他命名約定?
runX m
其中m :: X a
將運行X
單子,並返回與單子結果,a
沿着「副作用」。
evalX m
將運行計算並返回結果a
。
execX m
將運行計算並返回「副作用」而不是結果。
電梯有各種口味,對我來說可能有點棘手,想要在SO回答中解釋它們。您應該可能知道lift
和liftIO
,並知道/最終找出其他變體,如liftWith
和liftBaseWith
。例如,請參閱EZYang發佈的主題。
在monad名稱隱含變換後追加T
。在函數名稱後面附加M
意味着它是一次性的。附加_
意味着結果被忽略。
所有其他的後綴字母表示「使用hoogle」。
作爲短編http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Monad.html#g:2介紹幾個與組合子的命名規則關於什麼時候M後綴與m前綴相對應是合適的。 – 2012-02-27 05:22:48