Haskell:如何将值从一个函数传递到另一个函数

时间:2020-11-03 16:43:36

标签: list loops haskell replace

我有一个函数“ 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)

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用显式递归来枚举列表。每次在您的索引处进行呼叫时,如果索引为0,则使用S代替给定字符串的值,因此:

replaceWithS :: String -> Int -> String
replaceWithS "" _ = ""
replaceWithS (_:xs) 0 = … : …
replaceWithS (x:xs) i = … : replaceWithS … …

因此,x是字符串的头(第一个字符),而xs是具有其余字符的列表。您仍然需要在此处填写部分。