og_loc
og_loc

Reputation: 173

Pattern match in binding of lambda?

In Haskell, I often do something like this:

f $ \x -> case x of
            A a1 a2 -> ...
            B b1 b2 -> ...
            C c1 c2 -> ...

But I don't want x, I just want to deconstruct it.

In Standard ML I can do something like this:

f (fn A(a1,a2) => ...
    | B(b1,b2) => ...
    | C(c1,c2) => ...)

Is there a way to do this in Haskell or with any GHC extensions?

Upvotes: 12

Views: 1473

Answers (1)

Arnon
Arnon

Reputation: 2237

You can use the LambdaCase language extension and perform

{-# LANGUAGE LambdaCase #-}
... 
f $ \case 
     A a1 a2 ->
...

as per your example.

You can read more about it in GHC's documentation

Upvotes: 21

Related Questions