【问题标题】:Pattern match in binding of lambda?lambda绑定中的模式匹配?
【发布时间】:2015-04-25 07:20:33
【问题描述】:

在 Haskell 中,我经常做这样的事情:

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

但我不想要x,我只想解构它。

在标准机器学习中,我可以这样做:

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

有没有办法在 Haskell 或任何 GHC 扩展中做到这一点?

【问题讨论】:

    标签: haskell pattern-matching sml


    【解决方案1】:

    您可以使用 LambdaCase 语言扩展并执行

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

    按照你的例子。

    您可以阅读更多关于它的信息in GHC's documentation

    【讨论】:

    • word 在提出问题之前我刚刚浏览了手册的第 7 章,我一定错过了这个因为我太黑帮了!
    猜你喜欢
    • 2014-08-13
    • 2018-12-14
    • 2016-11-27
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2014-04-20
    • 2021-07-24
    • 1970-01-01
    相关资源
    最近更新 更多