2012-05-06 64 views
0
initials :: String -> String -> String 
initials firstname lastname = [f] ++ ". " ++ [l] ++ "." 
    where (f:_) = firstname 
      (l:_) = lastname 

對於此代碼。我得到錯誤解析錯誤輸入'='

parse error on input `=' 

爲什麼?

+0

我沒有模式匹配...... http://codepad.org/LVecpglP 唯一錯誤我認爲最後一行沒有正確縮進。你糾正後...解析錯誤應該去 –

回答

4

您使用where關鍵字前的製表符。到GHC它看起來像這樣:

␉  where␠(f:_)␠=␠firstname 
␠␠␠␠␠␠␠␠␠(l:_)␠=␠lastname 

所以,GHC認爲在where塊的第一行開始於塔14(對於IIRC 8列標籤計數),而第二線開始於第9欄,這將導致錯誤。

您應該使用文本編輯器將標籤轉換爲4個空格給你。

+0

謝謝。解決了。你是對的。該死的選項卡 –

4

順便說一句,你不需要助手功能,可以直接在參數

initials :: String -> String -> String 
initials (f:_) (l:_) = [f,'.',' ',l,'.']