正在尝试获取haskell中2字符串的首字母
然后我打电话正在尝试获取haskell中2字符串的首字母,haskell,Haskell,然后我打电话 initt [f:_] [l:_] = f ++ " " ++ l 我收到一个错误,说无法将类型“Char”与“[Char]”匹配 我真的不明白。我想你想要 initt "First" "Last" [f:\]相当于[(f:\],它将匹配类似[“First”] 另外,(++)可以处理字符串,而f和l应该是字符。充其量,你可以做一些类似于[c]++++“++[l]的事情,但是[f”,“l']更好更简单。++是列表连接。将f和l打包到列表中: initt (f:_) (l:_) =
initt [f:_] [l:_] = f ++ " " ++ l
我收到一个错误,说无法将类型“Char”与“[Char]”匹配
我真的不明白。我想你想要
initt "First" "Last"
[f:\]
相当于[(f:\]
,它将匹配类似[“First”]
另外,(++)
可以处理字符串,而f
和l
应该是字符。充其量,你可以做一些类似于[c]++++“++[l]
的事情,但是[f”,“l']
更好更简单。++
是列表连接。将f
和l
打包到列表中:
initt (f:_) (l:_) = [f, ' ', l]
或者像Ingo建议的那样创建它:
[f] ++ " " ++ [l]
另外,头:尾上的模式匹配意味着它是一个列表,因此您只需要(f:)
,而不是[f:)
这就引出了整个解决方案:
[f, ' ', l]
它必须是
[f',,l]
“[f:u]相当于[(f:u)]”-为什么?一般来说,像[a,b,c]
这样的模式将匹配具有指定长度的列表,在本例中为3<代码>[a]将列表与一个元素匹配。如果您使用类似于[(f:\]
的模式,那么您将一个列表与一个元素相匹配,该元素本身就是一个头部绑定到f
的列表。但是,在本例中,Haskell允许您删除括号,这样您就可以编写[f:\u]
。
initt (f:_) (l:_) = [f, ' ', l]