CL-USER> (defstruct (date (:print-function (lambda (p s k) (declare (ignore k)) (format s "~4,'0d-~2,'0d-~2,'0d" (date-year p) (date-month p) (date-day p))))) "For example, (1900-01-01) is a date." (year 1900 :type number) (month 01 :type number) (day 01 :type number)) DATE CL-USER> (make-date :year 2020 :month 12 :day 14) 2020-12-14 CL-USER> (prin1-to-string (make-date :year 2020 :month 12 :day 14)) "2020-12-14"