Gaucheでバブルソート

FizzBuzzしたし,とりあえずソーティングでもやってみるか〜と思ってバブルソートしてみた.
ら,鬼のようにむずかった(涙
Gauche1日目にして無茶した.

注:このプログラムは間違えています.

#!/usr/bin/env gosh

(define bsort-swap
  (lambda (x lst)
	(if (pair? lst)
	  (if (< x (car lst))
		 (append (list x) lst)
		 (append (list (car lst)) (bsort-swap x (cdr lst)))
		)
	  (list x)
	)
  )
)

(define bsort
  (lambda (lstdata)
	(if (pair? lstdata)
		(append
			(list (car (bsort-swap (car lstdata) (cdr lstdata))))
			(bsort (cdr (bsort-swap (car lstdata) (cdr lstdata))))
		)
		lstdata
	  )
	)
  )

(define (main args)
 (let ((inputlist `(9 0 1 8 2 7 3 6 4 5)))
  (print inputlist)
  (print (bsort inputlist))
  )
 )

こんなんでいいのかな?もっとうまく書けそうな気もするが.まあいいか.初日だし.