Tôi hiện đang có code mà trông như thế này:Đang tìm kiếm các thiếu nước Combinator cho Lens
do
x <- use foo
foo <~ runFoo x
nơi foo
là một Lens
đến một lĩnh vực Foo
và runFoo :: MonadState m => Foo -> m Foo
Tôi nghĩ cần phải có một cách để làm hoạt động này trong một dòng, nhưng tôi không thể tìm thấy nó. Tôi nghĩ rằng nó nên có một lời nhận xét như:
(????) :: MonadState s m => Lens' s a -> (a -> m a) -> m a
Câu hỏi:
- Có một combinator như vậy tồn tại? Nếu vậy, nó là cái gì?
- Khi tôi chạy vào một câu hỏi như thế này, cách tốt nhất để tìm kiếm câu hỏi đó (nghĩa là tôi thường chỉ nhập tên này vào Hoogle nhưng tôi không may mắn làm điều đó với thư viện ống kính)
- đây thực sự là một combinator nguyên thủy được tìm thấy trong Control.Monad? (Tôi sẽ hơi xấu hổ nếu đây là một công việc khác cho mũi tên kleisli)
Bạn đã thực sự làm bất cứ điều gì nữa ở đó thì chỉ desugar Haskell 'do' ký hiệu? Kỹ thuật này có thể được sử dụng để kết hợp hai dòng trong câu lệnh 'do'. Tôi muốn hợp nhất 'use' và' (<~) '. –