; sales commissions

(define (sum xs) (apply + xs))

(define (commission)
  (let loop ((commissions (list)))
    (display "Enter sales amount or CTRL-D: ")
    (let ((sale (read)))
      (if (eof-object? sale)
          (begin (newline)
                 (values (list->vector (reverse commissions))
                         (sum commissions)))
          (let ((commission (+ (* sale 0.1) 200)))
            (display "    Commission is ")
            (display commission) (newline)
            (loop (cons commission commissions)))))))

(commission)