qsort :: Ord a => [a]->[a]
qsort [] = []
qsort (x:xs) = qsort smaller ++ [x] ++ qsort larger
where
smaller = [a | a <- xs, a <= x]
larger = [b | b <- xs, b > x]
这个例子只要了解该算法, 即使不懂 Haskell 也能看懂...呃...猜懂 :-D
from: http://www.haskell.org/haskellwiki/Introduction
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x)
xs)
type declaration is not need for such small program.
另外, 我觉得
qsort [] = []
qsort (x:xs) = qsort [y | y <- xs, y < x] ++ [x] ++ qsort [y | y <-xs, y >= x]
这种写法比使用 fliter 更直观些. 当然就不知道其效率上有没有什么差别