(define bubble-sort
  (lambda (lst)
    (if (null? lst)
        lst
        (let ((lst-sorted (reverse (swap-pairs lst))))
         (cons (car lst-sorted) (bubble-sort (cdr lst-sorted)))
          );end let
     );end if
    );end lambda
  );end define

(define swap-pairs
  (lambda (lst)
    (cond
      ( (null? (cdr lst)) lst)
      ( ( < (car lst) (cadr lst)) 
        (cons (cadr lst) 
			  (swap-pairs (cons (car lst) (cddr lst)))));left < right => swap them 
      ( else (cons (car lst) (swap-pairs (cdr lst))));left > right =>keep the order
     );end cond
    );end lambda
  );end define