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页长,涵盖了所有标准语言功能。