Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
モナド アクションが与えられた場合、Writerモナド アクション内に書き込まれたデータに関数をマッピングすることで、モナド アクションを変更したいと考えています。
Writer
何かのようなもの:
retell :: (w -> w') -> Writer w a -> Writer w' a
そのような関数はライブラリに既に存在しますか? そうでない場合、どのように定義できますか?
retell f = Writer . second f $ runWriter
mapWriterライブラリが提供する機能もあります。だからあなたはこれを行うことができます:
mapWriter
retell = mapWriter . second
second関数は にありますが、次のControl.Arrowように一般的ではないバージョンを自分で定義できます。
second
Control.Arrow
second f (a, b) = (a, f b)