&gt; I&#x27;m not disagreeing with you, but regarding your examples, am I the only one that prefers the way lambdas and streams are implemented in Java?<p>I think you&#x27;re the only one that prefers not having FunctionN interfaces. I remember someone releasing a library of all the separate cases in Java pretty soon after the functionality came out.<p>Optimizing lambdas with a JVM opcode is cool. Delaying implementing them until you can add an opcode for it is not cool. I feel like Java should have been able to implement them like Scala did, and add the optimization later if necessary.<p>&gt; And regarding streams, I prefer one clean interface to having all the collection interfaces polluted with 1000 methods.<p>Agreed for methods that are &quot;secondary&quot;, but I think many of those methods are fundamental to being a collection. It&#x27;s very weird to me if I have to change my List into something else to do a basic list operation on it. And even for secondary operations I think a typeclass is a much more elegant way of separating those operations than having to wrap and unwrap.<p>&gt; Not to mention that in scala you have those traps, like when you are applying a map over a set and you end up with less elements than expected.<p>Any polymorphic method will behave differently on different types - that&#x27;s the whole point of polymorphism. I&#x27;d agree that map is a bad name for something with the semantics of the Scala method. Unfortunately at this point that&#x27;s not realistically something we can change.