-
LambdaCase -
- Версия:
-
7.6.1
- Статус:
-
Включено в
GHC2024
Разрешает использовать синтаксис lambda-case.
Расширение LambdaCase позволяет использовать выражения вида
\case { p1 -> e1; ...; pN -> eN }
которые эквивалентны
\freshName -> case freshName of { p1 -> e1; ...; pN -> eN }
Начиная с GHC 9.4.1, оно также позволяет использовать выражения с несколькими сопоставляемыми значениями (см. предложение GHC #302) вида
\cases { p11 ... pM1 -> e1; ...; p1N ... pMN -> eN }
которые эквивалентны функции, определённой следующим образом:
f p11 ... pM1 = e1 ... f p1N ... pMN = eN
Обратите внимание, что и \case, и \cases начинают блок разметки, поэтому можно написать
\case p1 -> e1 ... pN -> eN
Кроме того, начиная с GHC 9.0.1, сочетание LambdaCase и Arrows позволяет использовать синтаксис \case (а начиная с GHC 9.4.1 — \cases) в качестве команды в нотации proc:
proc x -> (f -< x) `catchA` \case p1 -> cmd1 ... pN -> cmdN