【发布时间】:2013-05-03 13:22:45
【问题描述】:
大家早上好,
这是我今天的工作,以及我遇到的问题:
--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 枚举列表。
有人对如何完成我在这里的目标有任何建议吗?
谢谢!
【问题讨论】:
-
感谢已经对此投反对票的人。
-
你试过
Address (toEnum r) (toEnum c)吗? -
您的解决方案看起来可疑的第一件事是
Address(toEnum r, toEnum c)。Address这里是一个构造函数,它就像一个函数。但是您使用的语法与 Haskell 中函数应用程序的语法完全不同。 -
空格使它更具可读性。这不仅仅是一个建议。这就是 Haskell 的工作方式。忘掉你对命令式语言的了解(C、C++、Java,无论你以前用过什么)。
-
是的,那个空间。在某种程度上,
Address也是一个函数。
标签: function haskell types enums