2012-02-27 12 views
13

ハスケルは、モナドの周りにいくつかの命名規則を確立しているようです。モナドの命名規則は何ですか?

例:

  • モナド変圧器の名前得るために端部にTを付加 - モナド計算実行するrunXXXを使用して(例えばReader>ReaderT
  • (例えばrunSTrunReader
  • liftXXXXXX

他の命名規則はありますか? m :: X aXモナドを実行し、モナドの結果、aと一緒に「副作用」を返します

答えて

13
  • runX m

  • は計算を実行し、結果をaに返します。

  • execX mは、計算を実行し、結果ではなく「副作用」を返します。

  • リフトにはさまざまな味があり、あまりにも手間がかかりすぎて、私の答えがわからないことがあります。あなたはおそらくliftliftIOを知っていて、liftWithliftBaseWithのような他の変種を知っていて/最終的に探しているはずです。たとえば、EZYangのトピックに関する投稿を参照してください。

  • モナド名の後にTを付加すると、トランスを意味します。関数名の後にMを追加すると、モナドであることを意味します。 _を付けると、結果は無視されます。

  • 他のすべての接尾文字は "use hoogle"を意味します。 http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Monad.html#g:2が持つコンビネータの命名規則のいくつかを説明する短い補遺として

+7

m接頭辞とは対照的にM接尾辞が適切である場合に関係します。 –

関連する問題