I'd like agree with Goetz's opinion, Collectors like in Clojure 1.7 Transducers. Java 8 have some transducers, such as Comparator.comparing, java.util.stream.Collectors.mapping、reducing、groupingBy、partitioningBy、summing 、Collectors.flatMapping(in Java 9) etc. I think a Java 8 Collector is a "reducing function", it's supplier fn is arity-0, it's accumulator fn is arity-2,it's arity-1 fn is finisher or completion. And Stream.collect() is similar to Clojure into function. see also: https://github.com/matthiasn/talk-transcripts/blob/master/Hickey_Rich/InsideTransducers.md
Best regards, Solomon
