Kinda nice, but what I really wish is to be able to use transducers (idea from clojure) so that I can define and compose a function and then apply it to a stream / an optional / an observable, etc.
Or, at the very least, being able to define functions taking a stream<A> and producing a stream<B> and compose it with another function taking a stream<B> as input and apply it all to a stream<A>.
Both are just not possible with the current Java stream API.