2013-11-23 43 views

回答

6

標準變壓器的Monad實例可在transformers包中找到。對於WriterT,請看here。不幸的是,目前沒有很好的工具支持來查找某個特定實例的定義 - 您只需要做一些有教育的猜測(或者用您最喜歡的grep替代品就可以很聰明)。

+0

太好了 - 就是這樣。我剛剛學習單個monad的細節,因此直接轉到他們的文件 - 還沒有查看「變形金剛」包 - 看起來我需要把它放在我的TODO列表中。謝謝! – haroldcarr

+0

順便說一句:你的鏈接有'#line-124'。除了手動檢查HTML源代碼之外,有什麼方法可以獲得這些錨定嗎? – haroldcarr

+1

@haroldcarr好吧,只有幾種不同類型的黑頭鱈產生的錨,並且可以全部瞭解它們。我並沒有聲稱自己這樣做,但是這裏有一些有用的:'#v:name'用於定義值'name'的地方; '#t:name'作爲定義'name'類型的地方;和'#line-n'作爲行'n'。由於實例沒有定義新的值或類型,因此必須使用'#line'形式(並因此以某種方式找出行號),但其他兩個更具可預測性。 –

0

所有來源都可以在Hackage找到。

+1

是的,我去過那裏。例如:http://hackage.haskell.org/package/mtl-2.1.2/docs/Control-Monad-Writer-Lazy.html ---但我很難找到'bind'和'return' - 因此請求幫助。 – haroldcarr

+1

這是因爲'mtl'的2.x版本採用'transformers'的具體實現(注意源代碼中的Control.Monad.Trans.Writer.Lazy導入)。就其本身而言,'mtl'只是添加Monad類,如'MonadWriter'。 – duplode

+0

@duplode介意我是否竊取您的評論並將其用作答案? – Tarrasch