anchor.diff:    {CerlFVar, CerlFun}.
   
   translate_expr(AST) ->
  -  translate_expr(AST, false).
  -
  -translate_expr(AST, IsToplevel) ->
     case AST of
  -    {'ES:DEFINE', Var, Expr} when IsToplevel ->
  -      translate_define(Var, Expr);
       {'ES:GLOVAR', Var} ->
         translate_glovar(Var);
       {'ES:IF', Pred, Then, Else} ->
  
positive.code: make_list([]) -> cerl:c_nil();
  make_list([H | T]) -> cerl:c_cons(H, make_list(T)).
  
  translate_seq(First, Next, IsToplevel) ->
    cerl:c_seq(translate_expr(First, IsToplevel), translate_expr(Next, IsToplevel)).
  
  translate_quote(Value) ->
    %% This is a PRE for cerl:abstract/1, but may not be true for all possible
  
negative.code:     {'ES:PRIMOP', PrimOp, Actuals} ->
        translate_primop(PrimOp, Actuals);
      {'ES:SEQ', First, Next} ->
        translate_seq(First, Next);
      {'ES:QUOTE', Value} ->
        translate_quote(Value)
    end.
  
  translate_glovar(Var) ->
    %% Synthesize "es_gloenv:get_var(Var)".
  