Gaucheのpartitionでqsort
多値を使ったpartitionでqsortをしてみる
>>(define qsort (lambda (x) (if (null? x) () (receive (l r) (partition (lambda (y) (< y (car x))) (cdr x)) (append (qsort l) (list (car x)) (qsort r)))))) =>qsort >>(qsort '(5 3 4 2 3)) =>(2 3 3 4 5)
receive句をbegin句と同様に扱えば別に怖くないことが判明。