title: Why - in Java 1.8 - is Function<V,R> used and not Function<R,V>?
body: <p>The order  seems odd because in regular Java the return type is always specified first.  As in:</p>
  
  <pre><code>public static double sum(Iterable&lt;Number&gt; nums) { ... }
  </code></pre>
  
  <p>Why then, in the Function and BiFunction classes has the choice been made to specify them the other way around?  As in:</p>
  
  <pre><code>interface Function&lt;T,R&gt;
  interface BiFunction&lt;T,U,R&gt;
  </code></pre>
  
  <p>I'm not asking here for opinions as to which is better, but specifically:</p>
  
  <p>a) Is there any technical or other (non-stylistic) benefit in preferring one order over the other?  Or is it an arbitrary choice?</p>
  
  <p>b) Is anyone aware of any documented explanation, or any stated reason from an authoritative source, why one was chosen over the other?</p>
  
  <p>Aside: the order seems even more odd if extended to higher arities.  For example, a hypothetical QuadFunction:</p>
  
  <pre><code>interface QuadFunction&lt;A,B,C,D,R&gt; { ... }
  </code></pre>
  
  <p>(At the time of writing the highest arity in the library is 2 - i.e. BiFunction.)</p>
  
  <p>See: <a href="http://download.java.net/jdk8/docs/api/java/util/function/package-summary.html" rel="nofollow">http://download.java.net/jdk8/docs/api/java/util/function/package-summary.html</a></p>