haskell - 在 Haskell 中解构类型

标签 haskell types

我在 Haskell 中定义了以下类型:

data AE = Num Float
        | Add AE AE
        | Sub AE AE
        | Mult AE AE
        | Div AE AE
        deriving(Eq, Read, Show)

现在我该如何解构它?具体来说,我将如何完成如下功能:

testFunct :: AE -> something
testFunct expression
    | if type Num = do this
    | if type Add = then do this
    etc.

另外,我如何从类型中获取数据?例如,如果我有 Sub AE1 AE2 我将如何提取 AE2

最佳答案

您要查找的内容称为“模式匹配”。它让您通过将类型与给定模式进行匹配来解构类型。在你的情况下,你可以说:

testFunct (Num x) = ...
testFunct (Add a b) = ...
testFunct (Sub a b) = ...

您应该阅读一本好的 Haskell 书籍,例如 LYAH或在 Haskell 中编程。

关于haskell - 在 Haskell 中解构类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616724/

相关文章:

haskell - 如何测量 Haskell 程序的顺序和并行运行时间

java - 为什么首选在条件语句中避免使用 Real domain (double/float)?

java - 为什么 JDK Collections.distinct 不强制参数包含相同的元素类型?

ubuntu - 我应该如何使环境变量可用于我的 Web 应用程序?

haskell - HaLVM 和线程

c# - "Force-casting"返回类型

javascript - 无法调用类型缺少调用签名的表达式...没有兼容的调用签名

C++ 控制内存访问和指针取消引用

haskell - 防止无意中使用不同类型的类实例

Haskell:检查 Int 是否在 Int 列表中