haskell了解数据类型

时间:2013-02-05 06:28:52

标签: haskell

假设我们有下一个数据:

data Value =
IntVal Int
| BoolVal Bool

和功能

f :: Value -> Int

如何在Value类型的参数上分离不同构造函数的案例? 因此f (IntVal 1)有一种行为,f (BoolVal True)有另一种行为。

1 个答案:

答案 0 :(得分:4)

有一些流行的方法是在函数参数中使用模式匹配。

negateValue :: Value -> Value
negateValue (IntVal  n) = IntVal  (-n)
negateValue (BoolVal p) = BoolVal (not p)

另一种方法是使用案例模式。

使用案例:

negateValue val = case val of
    IntVal  n -> IntVal  (-n)
    BoolVal p -> BoolVal (not p)