【发布时间】:2019-09-23 00:46:19
【问题描述】:
我正在学习 Haskell 并开始研究数据类型。我尝试做一个简单的示例,将 Yard 和英尺转换为英寸,数据类型定义为 LengthUnit。我想添加两个 LengthUnit 变量,所以我创建了一个名为 convert 的辅助函数,它将接收 LengthUnit 并将其转换为英寸。
我尝试执行以下操作,但不断收到错误消息“无法将预期类型 LengthUnit 与 Int 类型匹配。
这是我所拥有的:
data LengthUnit = INCH Int | FOOT Int | YARD Int
deriving (Show, Read, Eq)
convert :: LengthUnit -> Int
convert (INCH x) = x
convert (FOOT x) = x * 12
convert (YARD x) = x * 36
-- addLengths
addLengths :: LengthUnit -> LengthUnit -> LengthUnit
addLengths (INCH x) (INCH y) = convert(x) + convert(y)
-- I tried this as well and still receive same error
addLengths (INCH x) (INCH y) = x + y
addLengths (INCH x) (FOOT y) = convert(x) + convert(y)
.
.
.
我似乎找不到:
addLengths (LengthUnit x) (LengthUnit y) = convert(x) + convert(y)
感谢任何帮助,谢谢!
【问题讨论】:
标签: haskell