Plaster
New
List
Login
common-lisp
default
anonymous
2021.12.05 19:42:38
(defmacro rsetf (recursive-hash-plist value &rest indicators) (macrolet ((getf-hash-plist (hash-or-plist key) (if (hash-table-p (eval hash-or-plist)) `(gethash ,key ,hash-or-plist) `(getf ,hash-or-plist ,key)))) (labels ((build-rsetf (value keys &optional output) (if (not keys) `(setf ,output ,value) (build-rsetf value (rest keys) `(getf-hash-plist ,output ,(first keys)))))) (build-rsetf value indicators recursive-hash-plist))))
Raw
Annotate
Repaste
Edit