Plaster

text
CL-USER> (defmacro @ (path ht) (reduce (lambda (previous current) `(gethash ,current ,previous)) path :initial-value ht)) WARNING: redefining COMMON-LISP-USER::@ in DEFMACRO @ CL-USER> (macroexpand-1 '(@ (1 2 3) ht)) (GETHASH 3 (GETHASH 2 (GETHASH 1 HT))) T CL-USER> (defmacro @ (ht &rest path) (reduce (lambda (previous current) `(gethash ,current ,previous)) path :initial-value ht)) WARNING: redefining COMMON-LISP-USER::@ in DEFMACRO @ CL-USER> (macroexpand-1 '(@ ht 1 2 3)) (GETHASH 3 (GETHASH 2 (GETHASH 1 HT))) T CL-USER>