anchor.diff:    io:format("~p\n", [CerlModule]),
     {ok, _} = core_lint:module(CerlModule),
     print_module(CerlModule).
  +
  +%% Internals -------------------------------------------------------------------
   
   print_module(CerlModule) ->
     io:format("~s\n", [core_pp:format(CerlModule)]).
  
positive.code:       cerl:c_let([Tmp], CerlFun, cerl:c_apply(Tmp, CerlActuals));
      N when N =< 10 ->
        cerl:c_call(cerl:c_atom('es_apply'), cerl:c_atom('apply'),
  		  [CerlFun | CerlActuals]);
      _ ->
        ListOfActuals = make_list(CerlActuals),
        cerl:c_call(cerl:c_atom('es_apply'), cerl:c_atom('applyN'),
  		  [CerlFun, ListOfActuals])
    end.
  
  make_list([]) -> cerl:c_nil();
  make_list([H | T]) -> cerl:c_cons(H, make_list(T)).
  
  translate_define(Var, Expr) ->
    %% Synthesize `es_gloenv:enter_var(Var, Expr)'.
    cerl:c_call(cerl:c_atom('es_gloenv'), cerl:c_atom('enter_var'),
  	      [cerl:c_atom(Var), translate_expr(Expr)]).
  
  translate_glovar(Var) ->
    %% Synthesize `es_gloenv:get_var(Var)'.
    cerl:c_call(cerl:c_atom('es_gloenv'), cerl:c_atom('get_var'), [cerl:c_atom(Var)]).
  
  translate_if(Pred, Then, Else) ->
    %% Synthesize `case Pred of false -> Else; _ -> Then end'.
    cerl:c_case(translate_expr(Pred),
  	      [cerl:c_clause([cerl:c_atom('false')], translate_expr(Else)),
  	       cerl:c_clause([wildpat()], translate_expr(Then))]).
  
  translate_lambda(Formals, Body) ->
    assemble_lambda(translate_formals(Formals), translate_expr(Body)).
  
negative.code: assemble_letrec(Bindings, Body) ->
    FVars = [FVar || {FVar, _Formals, _Body} <- Bindings],
    cerl:c_letrec([assemble_letrec_binding(FVars, Binding) || Binding <- Bindings],
                  assemble_subst(FVars, Body)).
  
  assemble_letrec_binding(FVars, {FVar, Formals, Body}) ->
    {FVar, assemble_lambda(Formals, assemble_subst(FVars, Body))}.
  