; exercise 6

(define (exercise6)
  (let* ((val1 (read)) (val2 (read)) (val3 (read))
         (smallest 0) (middle 0) (largest 0))
    (cond ((and (<= val1 val2) (<= val1 val3))
            (set! smallest val1)
            (cond ((<= val2 val3)
                    (set! middle val2)
                    (set! largest val3))
                  (else (set! middle val3)
                        (set! largest val2))))
          ((and (<= val2 val1) (<= val2 val3))
            (set! smallest val2)
            (cond ((<= val1 val3)
                    (set! middle val1)
                    (set! largest val3))
                  (else (set! middle val3)
                        (set! largest val2))))
          (else (set! smallest val3)
                (cond ((<= val1 val2)
                        (set! middle val1)
                        (set! largest val2))
                      (else (set! middle val2)
                            (set! largest val3)))))
    (for-each display `("values sorted : "
        ,smallest ", " ,middle ", " ,largest #\newline))))

(exercise6)
(exercise6)