我正在學習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