Obecnie mam kodu, który wygląda tak:Poszukiwanie zaginionych State COMBINATOR dla Lens
do
x <- use foo
foo <~ runFoo x
gdzie foo
jest Lens
do pola Foo
i runFoo :: MonadState m => Foo -> m Foo
myślę, że nie powinno być sposób to zrobić ta operacja w jednym wierszu, ale nie mogę jej znaleźć. Myślę, że powinniśmy mieć komentarz w stylu:
(????) :: MonadState s m => Lens' s a -> (a -> m a) -> m a
pytania:
- Czy taki syntezatora istnieje? jeśli tak, to co to jest?
- Kiedy natknę się na inne pytanie w ten sposób, jaki jest najlepszy sposób na wyszukanie go (tj. Zazwyczaj po prostu wpisuję to w Hoogle, ale nie miałem szczęścia, robiąc to z biblioteką soczewek)
- to właściwie prymitywny kombinator znaleziony w Control.Monad? (Będę lekko zakłopotany, jeśli jest to kolejna praca za strzałką kleisli)
Czy rzeczywiście zrobiliście coś więcej, niż po prostu napisali notację Haskella "do"? Ta technika może być używana do łączenia dowolnych dwóch linii w instrukcji 'do'. Chcę scalić 'use' i' (<~) '. –