如何从自定义数据类型中提取信息

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 个参数 Pt1.01.0,这是没有意义的这就是 GHC 抱怨的原因。 – Robin Zigmond,