+(declaim (inline inches->mm))
+(defun inches->mm (d)
+ (* d +inches->mm+))
+
+(declaim (inline mm->inches))
+(defun mm->inches (d)
+ (/ d +inches->mm+))
+
+(defun length->mm (d units)
+ "Convert a length in units to mm."
+ (ecase units
+ (:mm d)
+ (:inches (inches->mm d))
+ (:feet (inches->mm (* d 12)))
+ (:yards (inches->mm (* d 36)))
+ (:meters (* 1000 d))))
+
+(defun mm->length (d units)
+ "Convert a number of mm to units."
+ (ecase units
+ (:mm d)
+ (:inches (mm->inches d))
+ (:feet (/ (mm->inches d) 12))
+ (:yards (/ (mm->inches d) 36))
+ (:meters (/ d 1000))))
+
+