initials :: String -> String -> String
initials firstname lastname = [f] ++ ". " ++ [l] ++ "."
where (f:_) = firstname
(l:_) = lastname
对于此代码。我收到了错误
parse error on input `='
为什么?
答案 0 :(得分:4)
您在where
关键字前使用制表符。对于GHC,它看起来像这样:
␉ where␠(f:_)␠=␠firstname
␠␠␠␠␠␠␠␠␠(l:_)␠=␠lastname
因此,GHC认为where
块中的第一行从第14列开始(8列iirc的选项卡计数),而第二行从第9列开始,这会导致错误。
您应该使用良好文本编辑器将标签转换为4个空格。
答案 1 :(得分:4)
顺便说一下,你不需要辅助函数,你可以直接模式匹配参数
initials :: String -> String -> String
initials (f:_) (l:_) = [f,'.',' ',l,'.']