我有一个函数“ one”,它创建一个长度为i的字符串,
fillWithEmpty :: Int -> String
fillWithEmpty i =
if i == 0 then "." else "." ++ fillWithEmpty(i - 1)
然后,我希望系统记住长度i,以便在给定需要替换的位置值e <时,它可以在长度i的字符串中的某个位置用'S'替换字符串中的字符。 / p>
replaceWithS :: String -> Int -> String
replaceWithS i e=
if i == e then "S" else "." ++ replaceWithS(i - 1)
任何帮助将不胜感激。谢谢
答案 0 :(得分:1)
您可以使用显式递归来枚举列表。每次在您的索引减处进行呼叫时,如果索引为0
,则使用S
代替给定字符串的值,因此:>
replaceWithS :: String -> Int -> String
replaceWithS "" _ = ""
replaceWithS (_:xs) 0 = … : …
replaceWithS (x:xs) i = … : replaceWithS … …
因此,x
是字符串的头(第一个字符),而xs
是具有其余字符的列表。您仍然需要在此处填写…
部分。