Spec-Zone.ru › Haskell 9

6.2.13. Lambda-case

LambdaCase
Since:

7.6.1

Status:

Included in GHC2024

Разрешает использование синтаксиса lambda-case.

Расширение LambdaCase позволяет использовать выражения вида

\case { p1 -> e1; ...; pN -> eN }

что эквивалентно

\freshName -> case freshName of { p1 -> e1; ...; pN -> eN }

С GHC 9.4.1 оно также допускает выражения с несколькими scrutinees (см. предложение 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.12.1/docs/users_guide/exts/lambda_case.html

Spec-Zone.ru

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