anchor.diff:  
   exp_defmacro(Name, [Args|Rest]=Def) ->
       Mcls = case is_symb_list(Args) of
  -           true -> exp_lambda_defmacro(Args, Rest);
  -           false ->
  -           if is_atom(Args) ->
  -               [[[Args,'$ENV']|exp_drop_comment(Rest)]];
  -              true ->
  -               exp_match_defmacro(Def)
  -           end
  -       end,
  +               true -> exp_lambda_defmacro([list|Args], Rest);
  +               false ->
  +                   if is_atom(Args) ->
  +                           exp_lambda_defmacro(Args, Rest);
  +                      true ->
  +                           exp_match_defmacro(Def)
  +                   end
  +           end,
       [Name,['match-lambda'|Mcls]].
   
  -exp_lambda_defmacro(Args, Rest) ->
  +exp_lambda_defmacro(Args, Body) ->
       %% Test whether first expression is a comment string.
  -    [[[[list|Args],'$ENV']|exp_drop_comment(Rest)]].
  -
  -exp_match_defmacro(Def) ->
  -    Cls = exp_drop_comment(Def),
  -    map(fun ([Head|Body]) -> [[Head,'$ENV']|Body] end, Cls).
  +    [[[Args,'$ENV']|exp_lambda_body(Body)]].
  +
  +exp_match_defmacro(Cls) ->
  +    map(fun ([Head|Body]) -> [[Head,'$ENV']|Body] end,
  +        exp_match_clauses(Cls)).
   
   %% exp_syntax(Name, Def) -> Lambda | MatchLambda.
   %%  N.B. New macro definition is function of 2 arguments, the whole
  
positive.code: 
  exp_rules(Name, Keywords, Rules) ->
      [Name,[lambda,[args,'$ENV'],
         [':',lfe_macro,mbe_syntax_rules_proc,
          [quote,Name],[quote,Keywords],[quote,Rules],args]]].
  
  %%  By Andr� van Tonder
  %%  Unoptimized.  See Dybvig source for optimized version.
  
negative.code: 
  exp_syntax(Name, Def) ->
      case Def of
          [macro|Cls] ->
              Mcls = map(fun ([Pat|Body]) -> [[Pat,'$ENV']|Body] end, Cls),
              [Name,['match-lambda'|Mcls]];
          ['syntax-rules'|Rules] ->
              exp_rules(Name, [], Rules)
      end.
  
  %% exp_rules(Name, Keywords, Rules) -> Lambda.
  