See FEXPRs in Lisp.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Fexpr" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Fexpr</a><p>and<p><a href="http:&#x2F;&#x2F;www.nhplace.com&#x2F;kent&#x2F;Papers&#x2F;Special-Forms.html" rel="nofollow">http:&#x2F;&#x2F;www.nhplace.com&#x2F;kent&#x2F;Papers&#x2F;Special-Forms.html</a><p>Passing unevaluated code into Lisp functions was widely used in Lisp. Long ago.<p>It is no longer, since macros are typically simpler to understand and easier to integrate into a compilation model.<p>In Symbolics Genera, which has weak support for FEXPRs:<p><pre><code>    (defun print-reverse zl:fexpr (form)
      (print (reverse (first form))))
</code></pre>
Calling (print-reverse (+ 1 2))  does print  (2 1 +)