输入`='上的解析错误

时间:2012-05-06 01:08:55

标签: haskell

initials :: String -> String -> String
initials firstname lastname = [f] ++ ". " ++ [l] ++ "."
    where (f:_) = firstname
          (l:_) = lastname 

对于此代码。我收到了错误

parse error on input `='

为什么?

2 个答案:

答案 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,'.']