haskell - lambda 绑定(bind)中的模式匹配?

标签 haskell pattern-matching sml

在 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 扩展中做到这一点?

最佳答案

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

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

按照你的例子。

您可以阅读更多相关信息in GHC's documentation

关于haskell - lambda 绑定(bind)中的模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28682750/

相关文章:

functional-programming - 尝试理解 SML 选项结构

haskell - Haskell 有类似 Incanter 的东西吗?

Haskell:用 do-notation 定义 FoldM

使用 Attoparsec 解析简单的分子名称

java - 在 Java 中使用正则表达式(一些特定字符)

sml - 是否有自定义 sml 中缀的字符白名单或黑名单?

haskell - 我的过滤器实现可以改进吗?

ruby - 如何匹配 ruby 中的多行

F# 匹配两个值

types - 运算符操作数类型不匹配