gpt4 book ai didi

list - Haskell - 家庭作业 - 连接两个列表

转载 作者:行者123 更新时间:2023-12-05 01:27:16 25 4
gpt4 key购买 nike

我得到一个 Char 数组,必须将其转换为 Moves(如下所示)

data Move = N | S | W | E | X
newtype Moves = Moves [Move]

createMoves:: [Char]-> Moves
createMoves (x:xs) = if xs==[] then Moves [createMove(x)]
else Moves [createMove (x)]

createMove:: Char-> Move
createMove (x) = if x=='N' then N
else if x=='S' then S
else if x=='W' then W
else if x=='E' then
else X

但是,我只成功地获得了列表的第一项。我已经尝试了多种方法来使 createMoves 递归,但我做对了。你能指导我吗?

最佳答案

if 语句的分支是相同的,所以它什么都不做。

在编写递归函数时,有两种情况。最基本的,您应该声明 createMoves [] = []。递归有点复杂;基本上,对于每个 x,您创建一个移动,它是附加到使用 xs 递归调用构建的列表的第一个元素。

更简单的方法是使用map 函数。您还可以查看其实现。顺便说一句,对于 createMove,您可以使用模式匹配来代替许多 if

关于list - Haskell - 家庭作业 - 连接两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6154872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com