2

HaskellでWriter Monadとパターンマッチを行う正しい方法は何ですか?

次のようにしたい...

import Control.Monad.Writer
hoge :: Writer [Int] (Int, String) -> String
hoge (Writer (_, (_, s))) = s

Writer実は、とWriterTとなどの違いがよくわかりませんWriter.Identity...

ガイダンスをいただければ幸いです。お読みいただきありがとうございます。

4

1 に答える 1

1

あなたが何をしようとしているのかを正しく理解していれば、 を使用runWriterして((Int, String), [Int])から抜け出し、Writerそこから文字列を抽出できます。のようなものsnd . fst . runWriter ...、おそらく。

WriterTWriteraを他のモナドと組み合わせる必要があるときに使用するものです。と の別々だが類似した実装Writerを書くよりも、 の実装だけを書き、モナドを使用するとして定義するWriterT方が簡単でした。モナドは実際には何もしません。そこにないふりをすることができます。WriterTWriterWriterTIdentityIdentity

于 2013-07-16T11:25:55.803 に答える