Haskell解析错误:输入'='。

3

这是一个快速排序函数。但我在5:46处遇到了一个错误。

--sort function
quicksort [] = []
quicksort (x:xs) = (quicksort lesser) ++[x] ++ (quicksort greater)
                      where lesser = filter (<) xs
                                 greater = filter (>=) xs

有什么问题吗? 看起来函数是正确的。


由于不可变性,这实际上并不是一个快速排序函数,但这是在您更熟悉该语言时讨论的问题。 - rtperson
1个回答

4

看起来你有一个简单的空格错误.... lessergreater 需要缩进相等,这样它们才能在同一列开始。


但它们的意图是相等的。只是在这里它们不相等。 - Артём Царионов
你必须在某处使用制表符,因为当它们的缩进不相等时,那就是我收到的确切错误。 - Adam Wagner
3
请确认您使用的是空格而不是制表符。如果您担心自己的手指,可以在编辑器中进行设置。当源代码中的制表符消失后,您就能知道缩进是否正确了。 - rtperson
1
@Артём Царионов,我不使用Windows,所以我不确定你的最佳选择,但我确定它不是Notepad。这个问题可能会有所帮助:https://dev59.com/MHRB5IYBdhLWcg3wEDul - Adam Wagner
我已将此代码复制并改名以使用csort进行编程。现在我遇到了两个错误-第3个字符串出现“couldn't match expected type Bool”的错误,第4个字符串也是同样的错误。 - Артём Царионов
@Артём Царионов:我并没有说这是你的函数唯一的问题……只是这个问题导致了你在这个问题标题中提到的错误。我认为你在这个类似的问题中并没有遇到这个问题:http://stackoverflow.com/questions/7841388/quicksort-with-custom-filter - Adam Wagner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接