Gauche3日目

注:このプログラムは間違えています.
昨日のBubbleSortをもうちょっと修正.
letを使って複数出てくる(bsort-swap (car lstdata) (cdr lstdata))をまとめた.

#!/usr/bin/env gosh

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

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

またちょっとすっきりした.