大家早上好,
这就是我今天正在做的事情,以及我正在努力解决的问题:
--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转换为行和列(不是Ints)
显然,toAddress的结构不正确,无法执行此任务。要求如下:
写一个函数toAddress,它接受一行和一列,每个都在[0 - 9]。构造一个地址并将其返回。使用toEnum索引 你的行和列枚举列表。
有没有人对如何完成我的目标提出任何建议?
谢谢!
答案 0 :(得分:3)
你的语法错了。
haskell中函数f :: A -> B -> C
的函数应用程序看起来像f a b
而不是f(a,b)
。 f(a,b)
仍然是正确的语法,但不是你想要的:它只将一个参数传递给函数(即由a和b组成的元组)。
所以toAddress
的正确实现如下所示:
toAddress r c = Address (toEnum r) (toEnum c)