Gaucheでクイックソート

リストから任意のものを抜き出すのはrubyだとselectだからと思って探してみると
srfi-1のfilterがそうだった。

>> (define qsort (lambda (x) (if (null? x) () (append (qsort (filter (lambda (y) (< y (car x))) (cdr x))) (list (car x)) (qsort (filter (lambda (y) (>= y (car x))) (cdr x)))))))
=> qsort

>> (qsort '(5 3 2 1 6 4 7 9 3 3))
=> (1 2 3 3 3 4 5 6 7 9)

なんか (list (car x))というのがいただけないな。