2015-02-23 32 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