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

    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) ->

#
#
lextends = (fn, ids, values) ->
  if (pairp ids)
    extend (lextends fn, (cdr ids), (cdr values)), (car ids), (car values)
  else
    fn

translate = (exp, store, qont) ->
  if (pairp exp)
