anchor.diff:              end
       end.
   
  +id(X) -> X.
   
   -ifdef(TEST).
   -include_lib("eunit/include/eunit.hrl").
  
positive.code:     [1,2,3] = toList(delay(fun () -> ofList([1,2,3]) end)),
      ok.
  
  lists_are_seqs_test() ->
      [1,2,3] = toList([1,2,3]),
      [1,2,3] = toList(delay(fun () -> [1,2,3] end)),
  
negative.code: seq(L) when is_list(L) ->
      {seq, {list, L}};
  seq({seq, _} = Seq) ->
      Seq;
  seq(_Seq) ->
      throw(argument_exception).
  
  %%% ------- internal -------
  
  find_internal(Enum0, F) ->
      find_internal0(Enum0, 0, F).
  
  find_internal0(Enum0, Index, F) ->
      case next(Enum0) of
          finished ->
              undefined;
          {Item, Enum} ->
              case F(Item) of
                  true ->
                      {Index, Item};
                  false ->
                      find_internal0(Enum, Index+1, F)
              end
      end.
  
  aggregate(Enum0, State, F) ->
      case next(Enum0) of
          finished ->
              State;
          {Item, Enum} ->
              aggregate(Enum, F(State, Item), F)
      end.
  
  enumerate(Enum0, Acc) ->
      case next(Enum0) of
  