       return ((x_fn3)data(cell))(car(args), car(cdr(args)), car(cdr(cdr(args))));
     }
   else if (is_user(cell))
-    return apply((x_any)data(cell), args);
-  else
-    assert(0);
-  return x_nil;
-}
-
-x_any eval(x_any cell)
+    return x_apply((x_any)data(cell), args);
+  else
+    assert(0);
+  return x_nil;
+}
+
+x_any x_eval(x_any cell)
 {
   if (is_atom(cell))
     return cell;
   else if (is_pair(cell) && (is_symbol(car(cell))))
     return x_cons(car(cell), list_eval(cdr(cell)));
   else
-    return apply(car(cell), list_eval(cdr(cell)));
+    return x_apply(car(cell), list_eval(cdr(cell)));
 }
 
 x_any intern(const char*);

  x_any token;
  x_any temp;

  token = ratom(infile);
  if (is_symbol(token) || is_builtin(token))
    return x_cons(token, read_tail(infile));
  if (token == x_left) {

{
  x_any token;

  token = read_atom(infile);
  if (is_symbol(token) || is_builtin(token))
    return token;
  if (token == x_left)
