anchor.diff:  map_key([_|_]=L) ->
       case is_posint_list(L) of
           true -> L;                              %Literal strings
  -        false -> erlang:error(illegal_mapkey)
  +        false -> eval_error(illegal_mapkey)
       end;
   map_key(E) when not is_atom(E) -> E;            %Everything else
  -map_key(_) -> erlang:error(illegal_mapkey).
  +map_key(_) -> eval_error(illegal_mapkey).
   
   %% eval_lambda(LambdaBody, Env) -> Val.
   %%  Evaluate (lambda args ...).
  
positive.code: match_bitexpr(S, Val, Bbs, Pbs, _) when is_atom(S) ->
      %% Don't need value, just check if symbol is set.
      case is_key(S, Bbs) or is_key(S, Pbs) of
      true -> erlang:error({multi_var,S});
      false ->
          {yes,store(S, Val, Bbs),store(S, Val, Pbs)}
      end;
  match_bitexpr(_, _, _, _, _) -> erlang:error(illegal_bitseg).
  
  %% get_pat_bitseg(Binary, Size, {Type,Unit,Sign,Endian}) -> {Value,RestBinary}.
  %%  This function can signal error if impossible to get specified bit
  
negative.code:     P = {map_key(K),eval_expr(V, Env)},
      [P|map_pairs(As, Env)];
  map_pairs([], _) -> [];
  map_pairs(_, _) -> eval_error(badarg).
  
  %% map_key(Key) -> Value.
  %%  Map keys can only be literals.
  