试图在haskell中获得2个字符串的首字母

时间:2013-10-17 10:22:34

标签: haskell

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

然后我打电话给

initt "First" "Last"

我收到错误,说无法将'Char'与'[Char]'

匹配

我真的不明白。

2 个答案:

答案 0 :(得分:9)

我想你想要

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

[f:_]相当于[(f:_)],与["First"]

相匹配

同样(++)适用于字符串,f& l应该是个字符。最好的情况是,您可以执行类似[c] ++ " " ++ [l]的操作,但[f, ' ', 'l']更好一些。简单。

答案 1 :(得分:4)

++ list 连接。将fl打包到列表中:

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

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

[f, ' ', l]

此外,head:tail上的模式匹配意味着它是一个列表,因此您只需要[f:_]而不是(f:_)

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

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