(defun solve-equation (a b c)
  (if (= a 0)
      (if (= b 0)
          "No solution or infinite solutions."
          (list (/ (- c) b)))
      (let ((discriminant (- (* b b) (* 4 a c))))
        (cond
          ((> discriminant 0)
           (list (/ (+ (- b) (sqrt discriminant)) (* 2 a))
                 (/ (- (- b) (sqrt discriminant)) (* 2 a))))
          ((= discriminant 0)
           (list (/ (- b) (* 2 a))))
          (t
           nil)))))

(defun print-solution (a b c)
  (format t "a=~d, b=~d, c=~d => ~{~a~^ ~}~%"
          a
          b
          c
          (solve-equation a b c)))

(print-solution 1 -3 2)
