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

Mih*_*lea 2 haskell

initt [f:_] [l:_] = f ++ " " ++ l
Run Code Online (Sandbox Code Playgroud)

然后我打电话

initt "First" "Last"
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,说无法将'Char'与'[Char]'匹配

我真的不明白.

Mar*_*ila 9

我想你想要的

initt (f:_) (l:_) = [f, ' ', l]
Run Code Online (Sandbox Code Playgroud)

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

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

  • 通常,像`[a,b,c]`这样的模式将匹配具有指定长度的列表,在本例中为3.` [a]`匹配具有一个元素的列表.如果你使用像`[(f:_)]`这样的模式,你将列表与一个元素匹配,这个元素本身就是一个头部绑定到`f`的列表.但是,在这种情况下,Haskell允许您删除括号,以便您可以编写`[f:_]`. (2认同)