(defclass object () ())
(defclass ship (object) ())
(defclass asteroid (object) ())

(defgeneric collide (a b))

(defmethod collide ((s ship) (o object))
  (format t "Ship hits something: ~a" o))

(defmethod collide ((o object) (a asteroid))
  (format t "Something ~a hits asteroid" o))
  
(defmethod collide ((a object) (b object))
  (format t "Something ~a hits something ~a" a b))

(collide (make-instance 'ship) (make-instance 'asteroid))