defineの中でさらにdefineできるらしい.ある関数Aからしか呼ばれないようなローカルな関数(?)Bを作る場合は,関数Aの定義内でBを定義する方が良い.
そこで,バブルソートを修正.
注:このプログラムは間違えています.
#!/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) ( 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)) ) )
すっきりしたかな….(ソーティングがこれでいいのかは未だ疑問)