(defclass polygon () ()) (defgeneric number-of-sides (p) (:documentation "returns the number of sides of a polygon")) (defgeneric perimeter (p)) (defgeneric area (p)) (defgeneric sides-lengths (p) (:documentation "returns the list of sides of a polygon")) (defmethod perimeter (p) (reduce #'+ (sides-lengths p)))