2013-02-24 78 views
2

我是Haskell的新手。在下面的例子中,該函數從列表中刪除所有出現的特定元素並返回一個新列表。另外,我正在嘗試使用幫助函數來獲取返回的列表並輸出它的長度。幫助函數,給出解析錯誤

我遇到的問題是編譯期間的解析錯誤,指向包含delete _ [] = []的行。

我很感激任何幫助找出錯誤的原因。

countDelete y (x:xs) = length outputList 
    where outputList = delete y (x:xs) 

    delete _ [] = [] 
    delete y (x:xs) | x==y = delete y xs 
        | otherwise = x:delete y xs 

回答

4

所有where子句中的綁定必須在同一列開始,

countDelete y (x:xs) = length outputList 
    where 
    outputList = delete y (x:xs) 

    delete _ [] = [] 
    delete y (x:xs) 
     | x==y  = delete y xs 
     | otherwise = x:delete y xs 

作品。

+0

感謝您的回覆。所以這基本上是由於縮進/間距錯誤? – AnchovyLegend 2013-02-24 01:11:55

+1

@MiGusta是的。 outputList中的「o」和「delete」中的「d」必須排隊。 – melpomene 2013-02-24 01:23:11