SA
Size: a a a
SA
SA
SA
AE
SA
SA
SA
SA
SA
SA
SA
SA
AE
SA
SA
SA
LL
(defmacro with-dot-syntax (single-form)
(labels ((transform (name)
(if (not (keywordp name))
(let ((strname (string name)))
(if (and (= 1 (count #\. strname :test #'char=))
(char/= #\. (char strname 0))
(char/= #\. (char strname (1- (length strname)))))
(let ((part1 (intern (subseq strname 0 (position #\. strname))))
(part2 (intern (subseq strname (1+ (position #\. strname))))))
`(slot-value ,part1 ',part2))
name))
name))
(map-transform (object)
(if (atom object)
(transform object)
(mapcar #'map-transform object))))
(map-transform single-form)))
YK
AE
AE