anchor.diff:  exp_append(Args) ->
       case Args of
           %% Cases with quoted lists.
  -        [?Q([A|As])|Es] -> [cons,?Q(A),['++',?Q(As)|Es]];
  -        [?Q([])|Es] -> ['++'|Es];
  +        [?Q([A|As])|Es] -> [cons,?Q(A),exp_append([?Q(As)|Es])];
  +        [?Q([])|Es] -> exp_append(Es);
           %% Cases with explicit cons/list/list*.
  -        [['list*',A]|Es] -> ['++',A|Es];
  -        [['list*',A|As]|Es] -> [cons,A,['++',['list*'|As]|Es]];
  -        [[list,A|As]|Es] -> [cons,A,['++',[list|As]|Es]];
  -        [[list]|Es] -> ['++'|Es];
  -        [[cons,H,T]|Es] -> [cons,H,['++',T|Es]];
  -        [[]|Es] -> ['++'|Es];
  +        [['list*',A]|Es] -> exp_append([A|Es]);
  +        [['list*',A|As]|Es] -> [cons,A,exp_append([['list*'|As]|Es])];
  +        [[list,A|As]|Es] -> [cons,A,exp_append([[list|As]|Es])];
  +        [[list]|Es] -> exp_append(Es);
  +        [[cons,H,T]|Es] -> [cons,H,exp_append([T|Es])];
  +        [[]|Es] -> exp_append(Es);
           %% Cases with lists of numbers (strings).
  -        %% [[N|Ns]|Es] when is_number(N) -> [cons,N,['++',Ns|Es]];
  +        %% [[N|Ns]|Es] when is_number(N) -> [cons,N,exp_append([Ns|Es])];
           %% Default cases with unquoted arg.
           [E] -> E;                %Last arg not checked
  -        [E|Es] -> exp_bif('++', [E,['++'|Es]]);
  +        [E|Es] -> exp_bif('++', [E,exp_append(Es)]);
           [] -> []
       end.
   
  
positive.code: exp_arith(As, Op, St0) ->
      {Ls,St1} = exp_args(As, St0),
      B = foldl(fun ([V,_], Acc) -> exp_bif(Op, [Acc,V]) end, hd(hd(Ls)), tl(Ls)),
      {['let*',Ls,B],St1}.
  
  %% exp_comp(Args, Op, State) -> {Exp,State}.
  %%  Expand comparison test strictly forcing evaluation of all
  
negative.code: exp_comp(As, Op, St0) ->
      {Ls,St1} = exp_args(As, St0),
      Ts = op_pairs(Ls, Op),
      {exp_let_star([Ls,exp_andalso(Ts)]),St1}.
  
  op_pairs([[V,_]|Ls], Op) ->
      element(1, mapfoldl(fun ([V,_], Acc) -> {exp_bif(Op, [Acc,V]),V} end,
  