Чтение главы о монадах в реальном мире Haskell. Я наткнулся на обесцвечивание обозначений, особенно когда у нас есть что-то вроде pattern <- action
.monadic desugaring haskell
-- file: ch14/Do.hs
doNotation3 =
do pattern <- act1
act2
{- ... etc. -}
actN
Приведенный пример обессахаренная в:
-- file: ch14/Do.hs
translated3 =
let f pattern = do act2
{- ... etc. -}
actN
f _ = fail "..."
in act1 >>= f
У меня возникают проблемы понимания, как вы можете иметь два паттерна, соответствующие случаи в пункте пусть?
Я не понимаю, как вы можете иметь f pattern
и f _
в том же разрешении. Я попытался поискать, если вы можете иметь несколько совпадений шаблонов в предложении let, но из того, что я видел, большинство людей используют оператор case для этого.
Мне нужна помощь в понимании того, что на самом деле происходит здесь?
с лямбда-случае это эквивалентно 'Пусть F = (\ случае шаблон -> делать {act2; ...; actN}; _ -> fail "...") в act1 >> = f'. –