haskell理解数据类型

haskell理解数据类型,haskell,Haskell,假设我们有下一个数据: data Value = IntVal Int | BoolVal Bool 和功能 f :: Value -> Int 如何在类型为Value的参数上区分不同构造函数的情况? 因此,f(IntVal 1)有一种行为,f(BoolVal True)有另一种行为。有几种不同的方法,一种流行的方法是在函数参数中使用模式匹配 negateValue :: Value -> Value negateValue (IntVal n) = IntVal (-n)

假设我们有下一个数据:

data Value =
IntVal Int
| BoolVal Bool
和功能

f :: Value -> Int
如何在类型为Value的参数上区分不同构造函数的情况?
因此,
f(IntVal 1)
有一种行为,
f(BoolVal True)
有另一种行为。

有几种不同的方法,一种流行的方法是在函数参数中使用模式匹配

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)

@capoluca您可能想了解一般的“模式匹配”。一个开始是@capoluca这有时也是解构数据类型的调用。另一个很好的资源是你可能想看看它或者Haskell的温和介绍。它大约有10页长,涵盖了所有标准语言功能。