anchor.diff:  %% subst-if-not(New, Test, Tree) -> Tree.
   %% sublis(Alist, Tree) -> Tree.
   %% eval(Sexpr) -> Value.
  -%% macroexpand(Form [,Environment]) -> {yes,Expansion} | no.
  -%% macroexpand-1(Form [,Environment]) -> {yes,Expansion} | no.
  -%% macroexpand-all(Form [,Environment]) -> {yes,Expansion} | no.
  +%% macro-function(Name [,Environment]) -> Macro | [].
  +%% macroexpand(Form [,Environment]) -> Expansion | Form.
  +%% macroexpand-1(Form [,Environment]) -> Expansion | Form.
  +%% macroexpand-all(Form [,Environment]) -> Expansion | Form.
   
   is_lfe_bif(acons, 3) -> true;
   is_lfe_bif(pairlis, 2) -> true;
  
positive.code: is_lfe_bif(sublis, 2) -> true;
  is_lfe_bif(eval, 1) -> true;
  is_lfe_bif(eval, 2) -> true;
  is_lfe_bif(macroexpand, 1) -> true;
  is_lfe_bif(macroexpand, 2) -> true;
  is_lfe_bif('macroexpand-1', 1) -> true;
  
negative.code: eval(Sexpr) -> eval(Sexpr, lfe_env:new()).  %Empty environment.
  eval(Sexpr, Env) -> lfe_eval:expr(Sexpr, Env).
  
  'macro-function'(Symb) -> 'macro-function'(Symb, lfe_env:new()).
  'macro-function'(Symb, Env) ->
      case lfe_env:get_mbinding(Symb, Env) of
          {yes,Macro} ->
              Macro;
          no -> []
      end.
  
  macroexpand(Form) -> macroexpand(Form, lfe_env:new()).
  macroexpand(Form, Env) ->
      case lfe_macro:expand_expr(Form, Env) of
          {yes,Exp} -> Exp;
          no -> Form
      end.
  
  'macroexpand-1'(Form) -> 'macroexpand-1'(Form, lfe_env:new()).
  'macroexpand-1'(Form, Env) ->
      case lfe_macro:expand_expr_1(Form, Env) of
          {yes,Exp} -> Exp;
          no -> Form
      end.
  
  'macroexpand-all'(Form) -> 'macroexpand-all'(Form, lfe_env:new()).
  