Function Haskell-类型、枚举和函数

Function Haskell-类型、枚举和函数,function,haskell,types,enums,Function,Haskell,Types,Enums,各位早上好, 以下是我今天的工作内容,以及我遇到的问题: --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,

各位早上好,

以下是我今天的工作内容,以及我遇到的问题:

--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转换为行和列(而不是int)

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

编写一个函数toAddress,该函数接受[0]中的行和列 − 9]. 构造一个地址并返回它。使用toEnum索引到 您的行和列枚举列表

有人对如何实现我的目标有什么建议吗


谢谢大家!

你的语法错了

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

因此,
toAddress
的正确实现如下所示:

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

多亏了已经否决此项的人。您是否尝试过
地址(toEnum r)(toEnum c)
?您的解决方案中第一件看起来可疑的事情是
地址(toEnum r,toEnum c)
<代码>地址这里有一个构造函数,它就像一个函数。但您使用的语法与Haskell中函数应用程序的语法完全不同。空格使其更具可读性。这不仅仅是一个建议。哈斯克尔就是这样工作的。忘记所有你所知道的关于命令语言(C,C++,java,你以前使用过的任何东西)。是的,那个空间。在某种程度上,
地址
也是一种功能。谢谢您,先生,非常感谢您的帮助!Haskell对我来说是个新手,到目前为止,我已经完成了大量的命令式编程。新思维,但我真的很喜欢。