     return id1.name == id2.name
   id1 == id2
 
-# Only called in rich node mode...
-
-astSymbolsToLispSymbols = (node) ->
-  return nil if nilp node
-  throw (new LispInterpreterError "Not a list of variable names") if not node.type == 'list'
-  handler = (cell) ->
-    return nil if nilp cell
-    cons (car cell).value, (handler cdr cell)
-  handler node.value
-
 cadddr = metacadr('cadddr')
 
 consp = (e) ->

    @definitial "length", null
    @definitial "primes", null


  listp:     (cell) -> cell.__type == 'list'
  atomp:     (cell) -> not (cell.__type?) or (not cell.__type == 'list')
  symbolp:   (cell) -> cell instanceof Symbol
  commentp:  (cell) -> typeof cell == 'string' and cell.length > 0 and cell[0] == ";"
  numberp:   (cell) -> typeof cell == 'number'
  stringp:   (cell) -> typeof cell == 'string' and cell.length > 0 and cell[0] == "\""
  boolp:     (cell) -> typeof cell == 'boolean'
  nullp:     (cell) -> cell == null
  vectorp:   (cell) -> (not straight_evaluation.listp cell) and toString.call(cell) == '[object Array]'
  recordp:   (cell) -> (not cell._prototype?) and toSTring.call(cell) == '[object Object]'
  objectp:   (cell) -> (cell._prototype?) and toString.call(cell) == '[object Object]'
  nilp:      (cell) -> nilp(cell)
  nvalu:     (cell) -> cell
  mksymbols: (cell) -> cell

  meaning: (e) ->
    meaningTable =
      "'":      ((e) => @meaningQuotation (cadr e))
      'lambda': ((e) => @meaningAbstraction (cadr e), (cddr e))
      'if':     ((e) => @meaningAlternative (cadr e), (caddr e), (cadddr e))
      'begin':  ((e) => @meaningSequence (cdr e))
      'set!':   ((e) => @meaningAssignment (cadr e), (caddr e))

    if (@atomp e)
      if (@symbolp e) then (@meaningReference e.name) else (@meaningQuotation e)
    else if meaningTable[(car e)]?
      meaningTable[(car e)](e)
    else
      @meaningApplication (car e), (cdr e)


    if consp e
      cons (conv (store (car e)).v), (conv (store (cadr e)).v)
    else
      if symbolp e then e.name
      else if stringp e then '"' + e | '"'
      else e
  conv exp.v

# 5.2.4
