2013-02-24 82 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