anchor.diff:  'putprop'(Name, Tag, Val) ->
     es_gloenv:insert(Name, Tag, Val).
   
  -'load'(Arg) ->
  -  es_load:load(get_onearg(Arg)).
  +'load'(X) ->
  +  es_load:load(X).
   
  -'compile'(Arg) ->
  -  es_compile:file(get_onearg(Arg)).
  -
  -%% Parameter parsing helpers
  -
  --define(argv, '$argv').
  -
  -get_onearg({?argv, _L}) -> error(badarity);
  -get_onearg(X) -> X.
  +'compile'(X) ->
  +  es_compile:file(X).
  
positive.code: 'memq'(X, [_ | L]) -> 'memq'(X, L);
  'memq'(_, []) -> false.
  
  'symbol?'(Arg) ->
    X = get_onearg(Arg),
    es_datum:is_symbol(X).
  
  'zero?'(Arg) ->
    X = get_onearg(Arg),
    X == 0.
  
  'null?'(Arg) ->
    X = get_onearg(Arg),
    case X of [] -> true; _ -> false end.
  
  'pair?'(Arg) ->
    X = get_onearg(Arg),
    case X of [_ | _] -> true; _ -> false end.
  
  'list?'(Arg) ->
    X = get_onearg(Arg),
    listp(X). % is_list/1 is taken :-(
  
  %% Erlang has no circular lists, so we don't need the Hare-and-Tortoise algorithm.
  
negative.code: 
  'append'(X, Y) -> X ++ Y.
  
  'reverse'(X) ->
    lists:reverse(X).
  
  'car'([X | _]) ->
    X.
  
  'cdr'([_ | Y]) ->
    Y.
  
  'caar'([[X | _] | _]) ->
    X.
  
  'cadr'([_, X | _]) ->
    X.
  
  'cddr'([_, _ | Y]) ->
    Y.
  
  'caddr'([_, _, X | _]) ->
    X.
  
  'cdddr'([_, _, _ | Y]) ->
    Y.
  
  'vector?'(X) ->
    es_datum:is_vector(X).
  
  'eval'(X) ->
    es_eval:primitive_eval(X).
  
  'getprop'(Name, Tag) ->
  