Symbols

It became apparent that treating symbols, like strings, as lists of characters and making the character function look up the symbol name in the environment was causing problems.

  1. Inefficient - many list nodes were created. Required conversion to internal string formats for name lookup.
  2. Macro Problems - raises complex issues around the handling of hygienic macros. As symbols are re-named what happens if you slice up a name etc.
  3. Nearly Useless - very rarely does one want to manipulate a symbol as a string.

Resolution

Instead of using strings (lists of characters) as symbols a symbol type was added. This solved the above problems while introducing very few issues/extra requirements. Since that time I have also realized that it is not that different from the lambda calculus where variable names are indeed an entity independent of the functions in the system.



jwalker@cs.oberlin.edu