2015-02-23 5 views
11

In Haskell, das tue ich oft so etwas wie dieses:Muster Übereinstimmung in der Bindung von Lambda?

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

Aber ich will nicht x, ich will nur, es dekonstruieren.

In Standard ML ich etwas tun kann:

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

Gibt es eine Möglichkeit, dies in Haskell oder mit irgendwelchen GHC Erweiterungen zu tun?

Antwort

19

können Sie die LambdaCase Spracherweiterung verwenden und

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

nach Ihrem Beispiel auszuführen.

Sie können mehr lesen über sie in GHC's documentation

+0

Wort, das ich, bevor Sie die Frage durch Kapitel 7 des Handbuchs nur gescrollt und ich muss diese cus verpasst von Ich bin zu gangsta! –