Exercise 1.17
************************************************************
1. (path n bst)
(define path
  (lambda (n bst)
    (if (null? bst) '()
	(if (= n (car bst)) '()
	    (if (> (car bst) n) (cons 'left (path n (cadr bst)))
		(cons 'right (path n (caddr bst))))))))
(display (path 17 '(14 (7 () (12 () ()))
		       (26 (20 (17 () ())
			       ())
			   (31 () ())))))
(newline)

************************************************************
2. (sort lon)
(define sort1
  (lambda (lon)
    (if (null? lon)
	'()
	(insert1 (car lon) (sort1 (cdr lon))))))
(define insert1
  (lambda (new sorted)
    (if (null? sorted)
	(list new)
	(if (<= new (car sorted))
	    (cons new sorted)
	    (cons (car sorted) (insert1 new (cdr sorted)))))))

(display (sort1 '(8 2 5 2 3)))
(newline)

************************************************************
3. (sort predicate lon)
(define sort2
  (lambda (predicate lon)
    (if (null? lon)
	'()
	(insert2 predicate (car lon) (sort2 predicate (cdr lon))))))
(define insert2
  (lambda (predicate new sorted)
    (if (null? sorted)
	(list new)
	(if (predicate new (car sorted))
	    (cons new sorted)
	    (cons (car sorted) (insert2 predicate new (cdr sorted)))))))

(display (sort2 > '(8 2 5 2 3)))
(newline)

************************************************************
