这个函数的类型是function :: Num a => ([Char],a) -> ([Char],a)
我对这个函数的输入是这样(".'*",0)
的,函数找到第一个'.'
or'*'
和更新a
,根据首先替换的字符将 200 或 400 添加到a
' 值。一旦某些内容发生了更改,字符列表的其余部分将附加到末尾(仅更改了一个字符)。如果头字符未更改,则处理列表的其余部分但保留头字符。
我相信前两个受保护的语句是正确的,但是我不知道如何使此功能递归以检查列表中的整个字符是否不变。
function ([], a) = ([], a)
function ((x:xs), a)
| x == '.' = ('-':xs, a+200)
| x =='*' = ('-':xs, a+400)
| otherwise = function(xs, a) --how do I put the unchanged x before xs without processing it?
基本上,当函数到达时,我需要处理字符列表的其余部分,但也需要返回未更改的字符。
所需输入输出的示例:
Main> function ("./-", 0)
("-/-",200)
或者
Main> function ("-/-", 0)
("-/-",0)
任何帮助是极大的赞赏!如果不清楚,我会澄清。我觉得我以错误的方式解决了这个问题。