title: Extracting and executing a closure/lambda from a plist macro body
body: <p>I'm trying to create a macro (<code>bar</code>) that should be used like this:</p>
  <pre><code>(let ((my-var &quot;foo&quot;))
     (bar (&quot;some&quot;)
          :buzz (lambda () (format t &quot;~a~%&quot; my-var))))
  </code></pre>
  <p>The macro should basically just FUNCALL the lambda with taking MY-VAR into account.</p>
  <p>What I've come up with is this:</p>
  <pre><code>(defmacro bar ((thing) &amp;body body)
     `(funcall (coerce (getf (list ,@body) :buzz) 'function)))
  </code></pre>
  <p>This works, it prints &quot;foo&quot;.
  But I'd like to know if this is how this is done or if there is a better way of doing this.</p>