解构Haskell中的类型

时间:2011-09-30 22:34:03

标签: 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

1 个答案:

答案 0 :(得分:8)

您正在寻找的是“模式匹配”。它让你解构类型,通过匹配给定的模式。在你的情况下,你可以说:

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

你应该通过一本好的haskell书,如LYAH或Haskell编程。