2013-09-03 9 views
5

のための国家Combinatorのを行方不明の検索私は現在、このようなコードを持っていますこの操作は1行では見つかりませんが、見つけられません。レンズ

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

質問:

  • は、このようなコンビネータが存在しない、私はそれはのようなコメントを持っているべきだと思いますか?もしそうなら、それは何ですか?
  • 私はこのような別の質問に遭遇したとき、それを検索する最良の方法は何ですか?(通常、これはHoogleに入力するだけですが、レンズライブラリでこれを行うのは幸いです)
  • Isこれは実際にはControl.Monadで見つかった基本的なコンビネータですか?あなたが探している関数の型シグネチャが>>=のそれに疑い近いですが、異なる第1引数で

答えて

0

(これはまだkleisli矢印のために別のジョブである場合、私は少し恥ずかしいとなります)。

特に、use foo :: Monad m => m Foofoo <~ runFoo :: Foo -> m Fooのように表示されるため、直接バインドをuse foo >>= (\x -> foo <~ runFoo x)として使用できます。おそらくもっと簡単な方法かもしれませんが、私は周りに遊ぶための完全なコードを持っていません。私は、2行を使用していると言いたいと思います。十分な操作であれば、独自のコンビネータを定義してください。

+1

あなたは実際に何かを行ったことがありますか?そして、ハスケルの 'do'表記をdesugarにしましたか?このテクニックは、 'do'文の中の任意の2行を結合するために使用できます。私は 'use'と'(<〜) 'をマージしたいと思います。 –

関連する問題