&gt; <i>You&#x27;d basically need to build up an entirely different language for manipulating symbols to even make any sense of it.</i><p>No problem:<p><pre><code>  struct symbol {
    obj_base_fields; &#x2F;&#x2F; macro
    obj name_string;
    obj package;
    &#x2F;&#x2F; ...
  };

  struct cons {
    obj_base_fields; &#x2F;&#x2F; macro
    obj car, cdr;
  };</code></pre>