5

現在、次のようなコードがあります。

do
  x <- use foo
  foo <~ runFoo x

fooaLensFooフィールドに、runFoo :: MonadState m => Foo -> m Foo

この操作を1行で行う方法があるはずだと思いますが、見つかりません。次のようなコメントが必要だと思います。

(????) :: MonadState s m => Lens' s a -> (a -> m a) -> m a

質問:

  • そのようなコンビネータは存在しますか?もしそうなら、それは何ですか?
  • このような別の質問に出くわしたとき、それを検索する最善の方法は何ですか (つまり、通常はこれを Hoogle に入力するだけですが、レンズ ライブラリでそれを行うのはうまくいきませんでした)。
  • これは実際には Control.Monad にあるプリミティブ コンビネータですか? (これがクライスリの矢のまた別の仕事だったらちょっと恥ずかしい)
4

2 に答える 2