【发布时间】:2016-12-12 01:59:18
【问题描述】:
我在 Haskell 中有以下代码 sn-p 来实现快速排序算法。
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
let smaller = quicksort [a | a <- xs, a <= x]
bigger = quicksort [a | a <- xs, a > x]
in smaller ++ [x] ++ bigger
但是,GHCi 拒绝告诉我第 5 行有语法错误的程序。但是我检查了“let”关键字的 Haskell 语法,看起来还可以。
有没有人可以帮我解决这个问题?非常感谢。
【问题讨论】:
-
因为
let不能与您的函数在同一列中,在本例中为第 1 列。只需在第 5 行开始的行首添加一个空格。 -
对你的问题有点不切实际,但如果你正在学习haskell,它可以帮助你:请注意,这个算法并不是真正的快速排序。它不使用常量内存。 augustss.blogspot.cz/2007/08/…
-
@user1747134 还有this 及其链接。