玩了近20年的编程,竟然不知道函数式编程(Function Programming),惭愧。无意中看到Haskell编程语言,为其精练性所叹服!一段程序就与像是一条条公式,以前受到太多的命令式编程(Imperative Programming)的教育,学习这东西必须转换一下编程思路。
下面是一段快速排序算法的代码:
qsort [] = []
qsort (x:xs) = qsort smaller ++ [x] ++ qsort larger
where
smaller = [ a | a <- xs, a < x ]
larger = [ b | b <- xs, b >= x ]
qsort (x:xs) = qsort smaller ++ [x] ++ qsort larger
where
smaller = [ a | a <- xs, a < x ]
larger = [ b | b <- xs, b >= x ]
利用标准库函数filter的写法是:
qsort [] = []
qsort [x] = [x]
qsort (x:xs) = (filter (x <) xs) ++ [x] ++ (filter (x >=) xs)
qsort [x] = [x]
qsort (x:xs) = (filter (x <) xs) ++ [x] ++ (filter (x >=) xs)
这是我所见过的最短小的快速排序代码。