initt [f:_] [l:_] = f ++ " " ++ l
然后我打电话给
initt "First" "Last"
我收到错误,说无法将'Char'与'[Char]'
匹配我真的不明白。
答案 0 :(得分:9)
我想你想要
initt (f:_) (l:_) = [f, ' ', l]
[f:_]
相当于[(f:_)]
,与["First"]
同样(++)
适用于字符串,f
& l
应该是个字符。最好的情况是,您可以执行类似[c] ++ " " ++ [l]
的操作,但[f, ' ', 'l']
更好一些。简单。
答案 1 :(得分:4)
++
是 list 连接。将f
和l
打包到列表中:
[f] ++ " " ++ [l]
或者像Ingo建议的那样创建它:
[f, ' ', l]
此外,head:tail
上的模式匹配意味着它是一个列表,因此您只需要[f:_]
而不是(f:_)
。
这将我们带到整个解决方案:
initt (f:_) (l:_) = [f, ' ', l]