<p>LISP and its descendants are &quot;homoiconic&quot; languages: The code model is represented within the data model. You can easily represent LISP code within LISP as quoted lists of symbols, you can(?) construct a function by constructing a list containing code and then pass that to defun (??) to make an executable function. I feel homoiconicity has lost some meaning with time, as modern languages like Go or Rust with (LISP-inspired!) macro systems only present a *representation* of code to other code.</p>
Reply