initt [f:_] [l:_] = f ++ " " ++ l
然后我打电话
initt "First" "Last"
我收到一个错误,提示无法将类型“Char”与“[Char]”匹配
我真的不明白。
initt [f:_] [l:_] = f ++ " " ++ l
然后我打电话
initt "First" "Last"
我收到一个错误,提示无法将类型“Char”与“[Char]”匹配
我真的不明白。
我想你想要
initt (f:_) (l:_) = [f, ' ', l]
[f:_]相当于[(f:_)]which 将匹配类似的东西["First"]
也(++)适用于字符串,而f&l应该是字符。充其量,你可以做一些类似[c] ++ " " ++ [l]但[f, ' ', 'l']更好更简单的事情。
++是列表连接。打包f并l放入列表:
[f] ++ " " ++ [l]
或者像 Ingo 建议的那样创建它:
[f, ' ', l]
此外,模式匹配head:tail意味着它是一个列表,所以[f:_]你需要简单的而不是(f:_).
这将我们带到了整个解决方案:
initt (f:_) (l:_) = [f, ' ', l]