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