anchor.diff:  fold(Folder, State, Seq) ->
       aggregate(seq(Seq), State, Folder).
   
  +groupBy(Projection, Seq) ->
  +    {seq, {delay, fun () -> group_by(Projection, #{}, seq(Seq)) end}}.
  +
   head(Seq) ->
       case next(seq(Seq)) of
           finished ->
  
positive.code:         {Item, Enum} ->
              enumerate(Enum, [Item | Acc])
      end.
  
  next({seq, Enum}) ->
      next(Enum);
  
negative.code:     [] = toList(zip3([], Seq2, Seq3)),
      ok.
  
  groupBy_test() ->
      Seq = seq([1,2,3,10]),
      [{low, Low}, {high, High}] =
          toList(groupBy(fun (X) when X < 10 -> low;
                             (_) -> high
                         end, Seq)),
  
      [10] = toList(High),
      [1,2,3] = toList(Low),
      ok.
  
  
  
  -endif.
  