anchor.diff:  %% map_pairs(Args, Env) -> [{K,V}].
   
   map_pairs([K,V|As], Env) ->
  -    Key = map_key(K),                           %Evaluate the key
  -    [{Key,eval_expr(V, Env)}|map_pairs(As, Env)];
  +    P = {map_key(K),eval_expr(V, Env)},
  +    [P|map_pairs(As, Env)];
   map_pairs([], _) -> [];
   map_pairs(_, _) -> erlang:error(badarg).
  +
  +map_pairs_1([K,V|As], Env) ->
  +    P = {map_key(K),eval_expr(V, Env)},
  +    {Map,Pairs} = map_pairs_1(As, Env),
  +    {Map,[P|Pairs]};
  +map_pairs_1([M], Env) -> {eval_expr(M, Env),[]};
  +map_pairs_1(_, _) -> erlang:error(badarg).
   
   %% map_key(Key) -> Value.
   %%  Map keys can only be literals.
  
positive.code: eval_expr([tuple|Es], Env) -> list_to_tuple(eval_list(Es, Env));
  eval_expr([binary|Bs], Env) -> eval_binary(Bs, Env);
  eval_expr([map|As], Env) ->
      KVs = map_pairs(As, Env),
      maps:from_list(KVs);
  eval_expr(['get-map',Map,K], Env) ->
      Key = map_key(K),
      maps:get(Key, eval_expr(Map, Env));
  eval_expr(['set-map',Map|As], Env) ->
      KVs = map_pairs(As, Env),
      foldl(fun ({K,V}, M) -> maps:put(K, V, M) end,
            eval_expr(Map, Env), KVs);
  eval_expr(['update-map',Map|As], Env) ->
      KVs = map_pairs(As, Env),
      foldl(fun ({K,V}, M) -> maps:update(K, V, M) end,
            eval_expr(Map, Env), KVs);
  %% Handle the Core closure special forms.
  eval_expr([lambda|Body], Env) ->
      eval_lambda(Body, Env);
  
negative.code: %% gmap_pairs(Args, Env) -> [{K,V}].
  
  gmap_pairs([K,V|As], Env) ->
      P = {map_key(K),eval_gexpr(V, Env)},
      [P|gmap_pairs(As, Env)];
  gmap_pairs([], _) -> [];
  gmap_pairs(_, _) -> erlang:error(badarg).
  
  gmap_pairs_1([K,V|As], Env) ->
      P = {map_key(K),eval_gexpr(V, Env)},
      {Map,Pairs} = gmap_pairs_1(As, Env),
      {Map,[P|Pairs]};
  gmap_pairs_1([M], Env) -> {eval_gexpr(M, Env),[]};
  gmap_pairs_1(_, _) -> erlang:error(badarg).
  
  %% eval_gif(IfBody, Env) -> Val.
  
  