我正在学习Haskell和某些东西出现在我被卡住了几天..所以我基本上试图通过字符列表(字符串)缓存,一旦它达到了字符串,是否有一种方法让我再次从头部递归到列表中?Haskell递归与字符列表
这是通过字符串递归一次的代码。
repeat2' :: [Char] -> Int -> [Char]
repeat2' [] _ = undefined
repeat2' (x:xs) 1 = [x]
repeat2' (x:xs) k
| (k > 0) = x: repeat2' xs(k-1)
它适用于
repeat2' “嘿” 1 = “H”
repeat2' “嘿” 2 = “他”
repeat2' “嘿” 3 =“哎”
但一旦我尝试
repeat2' “哎” 4 = “哎***例外:Prelude.undefined”
因为它要“repeat2”[] _ = undefined“;
但我想它打印
repeat2' ‘哎’4 =‘heyh’
..所以怎么这样,我回去串的头上?
感谢您的帮助!
我说得对,这是你的功课吗?因为看起来你的两个同学在过去几天可能要求几乎相同;)(他们两个刚刚在这里注册) – Carsten
btw:它会因为4而被定义为'undefined',因为你告诉你的函数是这个与你的第一个案例 - 我也给你同样的提示作为你的同学:而不是放下'x'你可能想把它放在哪里进一步调用'repeat2''可能再次找到它......进一步提示:你可以使用'x:...'将'x'预先加入列表...也许你知道一些可以追加它的东西... – Carsten
是的,它是哈哈,除非我没有要求回答;只是想法和建议;另外我不太明白你所说的“把它放在进一步呼叫的地方”..即时通讯相当新的这种语言,不知道你会怎么做..即时通讯不知道如何通过字符串从头开始! – hello