[英]Trying to get the initials of 2 string in haskell
initt [f:_] [l:_] = f ++ " " ++ l
然后我打電話
initt "First" "Last"
我收到一個錯誤,說無法將'Char'與'[Char]'匹配
我真的不明白。
我想你想要的
initt (f:_) (l:_) = [f, ' ', l]
[f:_]
相當於[(f:_)]
,它匹配像["First"]
這樣的東西
此外(++)
適用於字符串,而f
& l
應該是字符。 充其量,你可以做類似[c] ++ " " ++ [l]
事情,但[f, ' ', 'l']
更好更簡單。
++
是列表連接。 將f
和l
打包到列表中:
[f] ++ " " ++ [l]
或者像Ingo建議的那樣創建它:
[f, ' ', l]
此外, head:tail
上的模式匹配意味着它是一個列表,所以不需要[f:_]
,而只需要(f:_)
。
這將我們帶到整個解決方案:
initt (f:_) (l:_) = [f, ' ', l]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.