Jak uczę Haskell Mam świadomość, że do
notacja jest cukier tylko syntatic:Desugaring zrobić, notacja dla monad
a = do x <- [3..4]
[1..2]
return (x, 42)
przekłada się
a = [3..4] >>= (\x -> [1..2] >>= (\_ -> return (x, 42)))
Zdaję sobie sprawę, że będę prawdopodobnie używaj do-notacji, ale chciałbym zrozumieć, co się dzieje w tłumaczeniu. Czyli czysto ze względów pedagogicznych, czy istnieje sposób, aby ghc/ghci dał mi odpowiednie instrukcje wiążące dla dość złożonej monady zapisanej w notacji do-notacji?
Edytuj. Okazuje się lambdabot na #haskell można to zrobić:
<Guest61347> @undo do x <- [3..4] ; [1..2] ; return (x, 42)
<lambdabot> [3 .. 4] >>= \ x -> [1 .. 2] >> return (x, 42)
Oto kod źródłowy Undo plugin.
faktycznie 'm >> = (\ _ -> k)' jest 'm >> k' –
Lambdabot ma wtyczkę" cofnij ", którą wyrecytował zapis. –
Po prostu uczę się i czuję, że to jest klucz do zrozumienia szczegółów konkretnej instancji - wszystkie są napisane w kategoriach >> = –