anchor.diff:  findIndex(Pred, Seq) ->
       case find_internal(seq(Seq), Pred) of
           undefined ->
  -            throw(key_not_found_exception);
  +            throw_key_not_found_exn();
           {Index, _Item} ->
               Index
       end.
  
positive.code:     [1,2] = toList(append([1], [2])),
      ok.
  
  collect_test() ->
      [1, -1, 2, -2, 3, -3] = toList(collect(fun (X) -> [X, -X] end, [1,2,3])),
      ok.
  
  take_test() ->
      [1,2] = toList(take(2, [1,2,3])),
      ok.
  
  -endif.
  
negative.code: singleton(Item) ->
      {seq, {list, [Item]}}.
  
  skip(Num, Seq) ->
      {seq, {skip, Num, seq(Seq)}}.
  
  skipWhile(Pred, Seq) ->
      {seq, {skip_while, Pred, seq(Seq)}}.
  
  sum(Seq) ->
      aggregate(seq(Seq), 0, fun erlang:'+'/2).
  
  map(F, Seq) ->
      {seq, {map, F, seq(Seq)}}.
  
  max(Seq) ->
      reduce_internal(seq(Seq), fun (C, Acc) when C > Acc -> C;
                                    (_, Acc) -> Acc
                                end).
  
  
  min(Seq) ->
      reduce_internal(seq(Seq), fun (C, Acc) when C < Acc -> C;
                                    (_, Acc) -> Acc
                                end).
  
  nth(Num, Seq) ->
      item_internal(Num, seq(Seq)).
  
  length(Seq) ->
      aggregate(seq(Seq), 0, fun (C, _) -> C+1 end).
  
  exists(F, Seq) ->
      find_internal(seq(Seq), F) =/= undefined.
  