如何从自定义数据类型中提取信息
How to extract information from custom data type
我不熟悉 Haskell 和一般的函数式编程。我目前正在学习自定义数据类型并具有以下内容:
data Point = Pt Double Double deriving (Show, Eq)
getValue :: Point -> Double
getValue (Pt a _) = a
我正试图 return 自定义数据类型中的一个双精度值,但 运行 遇到了问题。每当我尝试提取我的点值之一时,我的控制台都会给我以下错误:“无法匹配预期类型 Integer -> Integer -> t
”。关于我做错了什么有什么想法吗?
(根据 OP 的评论编辑:)我在 GHCi 中输入了以下内容
test Pt 1.0 1.0
这是完整的错误消息:
• Couldn't match expected type ‘Integer -> Integer -> t’
with actual type ‘Double’
• The function ‘test’ is applied to three arguments,
but its type ‘Point -> Double’ has only one
In the expression:
test Pt 1 1
In an equation for ‘it’:
it = test Pt 1 1
• Relevant bindings include
it :: t (bound at <interactive>:497:1)
test
是我将 getValue
重命名为。
你显然想做 test (Pt 1.0 1.0)
。
没有括号的 test Pt 1.0 1.0
被解释为将 test
函数应用于 3 个参数 Pt
、1.0
和 1.0
,这是没有意义的这就是 GHC 抱怨的原因。 – Robin Zigmond,
我不熟悉 Haskell 和一般的函数式编程。我目前正在学习自定义数据类型并具有以下内容:
data Point = Pt Double Double deriving (Show, Eq)
getValue :: Point -> Double
getValue (Pt a _) = a
我正试图 return 自定义数据类型中的一个双精度值,但 运行 遇到了问题。每当我尝试提取我的点值之一时,我的控制台都会给我以下错误:“无法匹配预期类型 Integer -> Integer -> t
”。关于我做错了什么有什么想法吗?
(根据 OP 的评论编辑:)我在 GHCi 中输入了以下内容
test Pt 1.0 1.0
这是完整的错误消息:
• Couldn't match expected type ‘Integer -> Integer -> t’
with actual type ‘Double’
• The function ‘test’ is applied to three arguments,
but its type ‘Point -> Double’ has only one
In the expression:
test Pt 1 1
In an equation for ‘it’:
it = test Pt 1 1
• Relevant bindings include
it :: t (bound at <interactive>:497:1)
test
是我将 getValue
重命名为。
你显然想做 test (Pt 1.0 1.0)
。
test Pt 1.0 1.0
被解释为将 test
函数应用于 3 个参数 Pt
、1.0
和 1.0
,这是没有意义的这就是 GHC 抱怨的原因。 – Robin Zigmond,