let rec partition x = function
  | [] -> [],[]
  | y :: s -> let l,r = partition x s in if y <= x then y::l,r else l,y::r

let rec qsort = function
  | [] | [_] as l -> l
  | x :: xs -> let l,r = partition x xs in qsort l @ x :: qsort r

This document was generated using caml2html