anchor.diff:  eval_lit_map([K,V|As], Env) ->
       [{eval_lit(K, Env),eval_lit(V, Env)}|eval_lit_map(As, Env)];
   eval_lit_map([], _) -> [].
  +
  +%% Error functions. {?MODULE,eval_expr,2} is the stacktrace.
  +
  +eval_error(Error) ->
  +    erlang:raise(error, Error, stacktrace()).
  +
  +stacktrace() -> [{?MODULE,eval_expr,2}].
  
positive.code:                          Val = eval_expr(E, Env0),
                           case match(Pat, Val, Env0) of
                               {yes,Bs} -> add_vbindings(Bs, Env);
                               no -> erlang:error({badmatch,Val})
                           end;
                       ([Pat,['when'|_]=G,E], Env) ->
                           Val = eval_expr(E, Env0),
                           case match_when(Pat, Val, [G], Env0) of
                               {yes,[],Bs} -> add_vbindings(Bs, Env);
                               no -> erlang:error({badmatch,Val})
                           end;
                       (_, _) -> erlang:error({bad_form,'let'})
                   end, Env0, Vbs),
      eval_body(Body, Env1).
  
  
negative.code:                      ([V,['match-lambda',[Pats|_]|_]=Match], E)
                         when is_atom(V) ->
                           Add(V, length(Pats), Match, Env0, E);
                       (_, _) -> eval_error({bad_form,'let-function'})
                   end, Env0, Fbs),
      %% io:fwrite("elf: ~p\n", [{Body,Env1}]),
      eval_body(Body, Env1).
  