Gaucheでバブルソート?

よし、今までの研究成果を結集するのだ。
なんか (lambda (y) `(,(car y) ,@(bsort (cdr y)))) で呼び出しているbsortはクラインの壺みたいなイメージを持った。
すごくおもしろい。

>>(define bsort (lambda (x) (if (null? x) () ((lambda (y) `(,(car y) ,@(bsort (cdr y)))) (fold-right (lambda (x y) (if (null? y) `(,x) (if (< x (car y)) `(,x ,@y) `(,(car y) ,@`(,x ,@(cdr y)))))) () x)))))
=>bsort

>>(bsort '(4 3 1 2))
=>(1 2 3 4)

最初の準クオートはconsの方が良いかもしれない。