SA
Size: a a a
SA
SA
SA
SA
SA
SA
SA
(defmacro with-dot-syntax (single-form)
(labels ((expand (ls)
(if (= 2 (length ls))
`(slot-value ,(intern (cadr ls)) ',(intern (car ls)))
(destructuring-bind (head . tail) ls
`(slot-value ,(expand tail) ',(intern head)))))
(transform (name)
(if (not (keywordp name))
(let ((strname (format nil "~s" name)))
(if (and (/= 0 (count #\. strname :test #'char=))
(char/= #\. (char strname 0) (char strname (1- (length strname)))))
(expand (reverse (uiop:split-string strname :separator ".")))
name))
name))
(map-transform (object)
(if (atom object)
(transform object)
(mapcar #'map-transform object))))
(map-transform single-form)))
SA
SA
SA
SA
(string 12)
вот это невалидный кодSA
SA
SA
SA
SD
SA
SA
SA