2
initt [f:_] [l:_] = f ++ " " ++ l

然后我打电话

initt "First" "Last"

我收到一个错误,提示无法将类型“Char”与“[Char]”匹配

我真的不明白。

4

2 回答 2

9

我想你想要

initt (f:_) (l:_) = [f, ' ', l]

[f:_]相当于[(f:_)]which 将匹配类似的东西["First"]

(++)适用于字符串,而f&l应该是字符。充其量,你可以做一些类似[c] ++ " " ++ [l][f, ' ', 'l']更好更简单的事情。

于 2013-10-17T10:24:37.567 回答
4

++列表连接。打包fl放入列表:

[f] ++ " " ++ [l]

或者像 Ingo 建议的那样创建它:

[f, ' ', l]

此外,模式匹配head:tail意味着它是一个列表,所以[f:_]你需要简单的而不是(f:_).

这将我们带到了整个解决方案:

initt (f:_) (l:_) = [f, ' ', l]
于 2013-10-17T10:25:13.123 回答