6.2.13. Lambda-case¶
The LambdaCase
extension enables expressions of the form
\case { p1 -> e1; ...; pN -> eN }
which is equivalent to
\freshName -> case freshName of { p1 -> e1; ...; pN -> eN }
Since GHC 9.4.1, it also allows expressions with multiple scrutinees (see GHC proposal #302) of the form
\cases { p11 ... pM1 -> e1; ...; p1N ... pMN -> eN }
which is equivalent to a function defined as
f p11 ... pM1 = e1
...
f p1N ... pMN = eN
Note that both \case
and \cases
start a layout, so you can write
\case
p1 -> e1
...
pN -> eN
Additionally, since GHC 9.0.1, combining LambdaCase
with
Arrows
allows \case
(and since GHC 9.4.1 \cases
)
syntax to be used as a command in proc
notation:
proc x -> (f -< x) `catchA` \case
p1 -> cmd1
...
pN -> cmdN