1

晚上,

我有这个功能

partialDecode :: [(Char, Char)] -> String -> String
partialDecode [] y = y -- If we have gone through all guesses we may return the string
partialDecode x y = partialDecode (drop 1 x) replace ((fst (x !! 0) snd (x !! 0) y)) -- Recurse over the function: Drop the leading element in the list of guesses and substitute every occurrence of the guess in the string

但是,当我运行它时,ghci 返回一个错误,说我在递归时提供了 3 个参数而不是 2 个。我不确定这意味着什么,我在 (drop 1 x) 中提供了一个元组列表,在 replace ((fst (x !! 0) snd (x !! 0) y)) 中提供了一个字符串

建议?

干杯!

4

1 回答 1

3

这:

partialDecode (drop 1 x) replace ((fst (x !! 0) snd (x !! 0) y))

将这些参数传递给partialDecode

  • (drop 1 x)
  • replace
  • ((fst (x !! 0) snd (x !! 0) y))

您可以重新括起来:

partialDecode x y = partialDecode (drop 1 x) (replace (fst (x !! 0) snd (x !! 0) y))

或使用$

partialDecode x y = partialDecode (drop 1 x) $ replace (fst (x !! 0) snd (x !! 0) y)

看起来你也应该对fstand做同样的事情snd

partialDecode x y = partialDecode (drop 1 x) $ replace (fst $ x !! 0) (snd $ x !! 0) y
于 2013-10-26T18:12:46.507 回答