2

大家,早安,

这是我今天正在处理的内容,以及我遇到的问题:

--A
data Row = A | B | C | D | E | F | G | H | I | J deriving (Enum, Ord, Show, Bounded, Eq, Read)
data Column = One | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten  deriving (Enum, Ord, Show, Bounded, Eq, Read)
--B
data Address = Address Row Column deriving (Show, Read, Eq)

然后几行之后我得到了问题孩子:

toAddress r c = Address(toEnum r, toEnum c)

我需要为地址提供行和列,但我需要将 r 和 c 转换为行和列(而不是整数)

显然 toAddress 的结构不正确以执行此任务。要求如下:

编写一个函数 toAddress,它接收一行和一列,每个都在 [0 - 9] 中。构造一个地址并返回它。使用 toEnum 索引到您的 Row 和 Column 枚举列表。

有人对如何完成我在这里的目标有任何建议吗?

谢谢!

4

1 回答 1

3

你语法错误。

haskell中函数的函数应用f :: A -> B -> C看起来像 thisf a b而不是f(a,b)f(a,b)仍然是正确的语法,但不是您想要的:它只将一个参数传递给函数(即由 a 和 b 组成的元组)。

所以正确的实现toAddress看起来像这样:

toAddress r c = Address (toEnum r) (toEnum c)
于 2013-05-03T13:45:24.483 回答