2015-02-23 53 views
11

在Haskell,我經常做這樣的事情:模式匹配綁定的lambda?

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

但我不想x,我只是想解構它。

標準ML我可以做這樣的事情:

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

有沒有辦法在Haskell或與任何GHC擴展做到這一點?

回答

19

您可以使用LambdaCase語言擴展,並執行

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

按你的例子​​。

可以使問題之前閱讀更多關於它in GHC's documentation

+0

字我只是通過手動第7章滾動,我必須錯過這個CUS我太匪幫! – 2015-02-23 20:31:40