Reputation: 173
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
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