【发布时间】:2022-01-05 00:53:39
【问题描述】:
getNames 'A' [('A', "Smith"), ('J', "Brown")] -> ["A.Smith", "A.Brown"]
我尝试将 char 添加到列表中的每个字符串元素。我的代码是:
addForEvery :: Char -> [String] -> [String]
addForEvery a (x:xs) = [a] ++ x : addForEvery a xs
print(addForEvery 'a' ["fa"])
但我收到以下错误:
jdoodle.hs:6:32: error:
• Couldn't match type ‘[Char]’ with ‘Char’
Expected type: [Char]
Actual type: [String]
• In the second argument of ‘(++)’, namely ‘x : addForEvery a xs’
In the expression: [a] ++ x : addForEvery a xs
In the expression: [[a] ++ x : addForEvery a xs]
|
6 | addForEvery a (x:xs) = [[a] ++ x : addForEvery a xs]
| ^^^^^^^^^^^^^^^^^^^^
【问题讨论】:
-
在你的例子中,
"Smith"如何变成"Taylor"? -
签名已经不一致:在您的示例中,第二个参数是对列表,但在您的签名
addForEvery :: Char -> [String] -> [String]中,第二个参数是字符串列表。