Skip to content

Instantly share code, notes, and snippets.

@death
Created December 8, 2017 12:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save death/898330dda627876b00a05b33b11124f7 to your computer and use it in GitHub Desktop.
Save death/898330dda627876b00a05b33b11124f7 to your computer and use it in GitHub Desktop.
(defmacro with-list-properties (((&rest vars) plist &key modify) &body forms)
(if modify
(once-only (plist)
(let* ((keys (mapcar #'make-keyword vars))
(bindings (mapcar (lambda (var key)
`(,var (getf ,plist ,key)))
vars keys)))
`(symbol-macrolet ,bindings
,@forms)))
`(destructuring-bind (&key ,@vars &allow-other-keys) ,plist
,@forms)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment