【发布时间】:2014-08-08 03:40:15
【问题描述】:
我正在尝试使用 haskell 模拟跳棋游戏。我得到了一个名为 checkersState 的 4 元组,我想用几个不同的函数对其进行操作。到目前为止,我有一个函数 oneMove,它接收来自 checkerState 的输入并应该返回修改后数据的元组:
输入元组:
(
3600,
"",
[
"----------",
"------r---",
"----------",
"----------",
"---r-r----",
"------r---",
"---w---w-w",
"----------",
"----------",
"------w---"
],
(
49
,
43
)
)
到目前为止,我有类似于下面定义我的函数的内容,但不确定如何访问元组 checkerState 中的各个成员。此方法将花费时间、捕获的棋子数组、棋盘和移动来制作,并返回时间、捕获的棋子数组和棋盘。目前,我想根据板子的状态修改元组中的时间(INT):
onemove :: (Int,[Char],[[Char]],(Int,Int)) -> (Int,[Char],[[Char]])
提前致谢!
【问题讨论】:
-
您是否考虑过编写
data类型,也许是Record类型,以便您可以更轻松地访问不同的字段? -
Haskell 对具有两个以上元素的元组的支持有些有限(除非您使用像镜头这样的额外库),也许部分是为了阻止使用它们,正如其他人所说,使数据类型通常显示更清晰您的类型的预期用途。