anchor.diff:  reducel(Fun,Z,{single,X})       -> Fun(Z,X);
   reducel(Fun,Z,{deep,PR,M,SF})   ->
       Fun1 = fun(A,B) -> reducel(Fun,A,B)  end,
  -    Fun2 = fun(A,B) -> reducel(Fun2,A,B) end,
  +    Fun2 = fun(A,B) -> reducel(Fun1,A,B) end,
       Fun1(Fun2(Fun1(Z,PR),M),SF);
   
   reducel(Fun,Z,L) when is_list(L) ->
  
positive.code: %% API
  -export([pushl/2, pushr/2, is_empty/1, headl/1, taill/1, concat/2, measure/2]).
  
  %%
  %% Monoid behavior
  %%
  %%-callback identity(T) -> T.
  %%-callback binary_op(T,T) -> T.
  
  -define(SUSP(Expr), fun() -> Expr end).
  -define(FORCE(Expr),Expr()).
  
  -type tree_node(E) ::
  {node2,E,E}
  
negative.code: reducer(_Fun,empty,Z)           -> Z;
  reducer(Fun,{single,X},Z)       -> Fun(X,Z);
  reducer(Fun,{deep,PR,M,SF},Z)   ->
      Fun1 = fun(A,B) -> reducer(Fun,A,B)  end,
      Fun2 = fun(A,B) -> reducer(Fun1,A,B) end,
      Fun1(PR,Fun2(M,Fun1(SF,Z)));
  
  reducer(Fun,L,Z) when is_list(L) -> lists:foldr(Fun,Z,L).
  