I just write a code snip like
```
.fold(new Tuple2<>("", 0L), new FoldFunction<WikipediaEditEvent,
Tuple2<String, Long>>() {
@Override
public Tuple2<String, Long> fold(Tuple2<String, Long>
acc, WikipediaEditEvent event) {
acc.f0 = event.getUser();
acc.f1 += event.getByteDiff();
return acc;
}
});
```
and replace it using `aggregate()`
```
.aggregate(new AggregateFunction<WikipediaEditEvent, Tuple2<String, Long>,
Tuple2<String,Long>>() {
@Override
public Tuple2<String, Long> createAccumulator() {
return new Tuple2<>("", 0L);
}
@Override
public Tuple2<String, Long> add(WikipediaEditEvent
event, Tuple2<String, Long> acc) {
return new Tuple2<>(event.getUser(), acc.f1 +
event.getByteDiff());
}
@Override
public Tuple2<String, Long> getResult(Tuple2<String,
Long> acc) {
return acc;
}
@Override
public Tuple2<String, Long> merge(Tuple2<String, Long>
a, Tuple2<String, Long> b) {
return new Tuple2<>(a.f0, a.f1 + b.f1);
}
});
```
It seems I have to write much more code using `aggregate()`
Is there something I miss so that write so much code? Or say, maybe
`aggregate()` is expressive, but why `fold()` deprecated? Since `fold` is a
general concept people can understand.