Spec-Zone.ru › Haskell 9

6.2.13. Lambda-case

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

© 2002–2007 The University Court of the University of Glasgow. All rights reserved.
Licensed under the Glasgow Haskell Compiler License.
https://downloads.haskell.org/~ghc/9.14.1/docs/users_guide/exts/lambda_case.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API