其实跟scheme很类似的表操作,实现起来也比较容易。
1 let rec qsort cmp lst = 2 match lst with 3 | [] -> [] 4 | h::r -> 5 let less = List.filter (fun i -> (cmp i h) < 0) r in 6 let great = List.filter (fun i -> not ((cmp i h) < 0)) r in 7 (qsort cmp less) @ ( h::(qsort cmp great)) ;;
这里使用了List.filter来完成我们的工作,简化代码的编写。