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]