Hi Mike,

In BinaryOperator.java this sentence doesn't read correctly:

+ * An operation upon two operands yielding a result. This is a specialization of + * {@code BiFunction} for the operands and the result are all being of the same
+ * type.

suggestions:

{@code BiFunction} for the case where the operands and the result are all of the same type.

{@code BiFunction} where the operands and the result are all of the same type.

---

DoubleUnaryOperator.java - this changed wording seems more awkward than the original:

     /**
-     * Returns the {@code double} result of the operation upon the
+     * Returns a {@code double} value result of the operation upon the
      * {@code double} operand.

---

Function.java

+ * @param <R> the type of result of the {@code apply} operation.

Either "the type of the result of the ...", or "the type of result from the ..."

---

General comment regarding specializations of Function. If we have Function<T, R> where R is the result type, then in the specializations which specialize the input type (T) then we should use R for the remaining type variable eg IntFunction<R> rather than IntFunction<T>

---

In LongFunction:

+     * @param l the input value

why use l as the parameter name? I presume for "long" but why? I thought the "i" parameter in IntFunction was so named for "input". I would much rather see a common parameter naming scheme being used (i, t, val, arg - any of these).

---

UnaryOperator.java

This sentence doesn't read right:

+ * result are of the same type. This is a specialization of {@code Function} for
+ * the operand and the result of the same type.

suggest:

"This is a specialization of {@code Function} for the case where the operand and result are of the same type."

---

package-info.java

I've flagged this elsewhere but you may not have seen it:

+ *     Predicate&lt;String>

If we use &lt; then we should also use &gt;.

---

BiFunction:

+ * is the two-arity specialization of {@link Consummer}

typo: Consummer

+ * @param <R> the type of output objects from {@code apply} operation.

from -> from the

----

The *BiXXX types are not consistently documented. For example:

BiFunction has:

+ * @param <T> the type of input objects provided to the {@code apply} operation. + * @param <U> the type of input objects provided to the {@code apply} operation.

while BiPredicate has:

+ * @param <T> the type of the first argument to {@code test}.
+ * @param <U> the type of the second argument to {@code test}.

I prefer the BiPredicate form.

---

DoublePredicate.java

+ * Determines if the {@code long} input value matches some criteria. This is the + * {@code double}-consuming primitive type specialization of {@link Predicate}.

The first "long" should be "double".

---

ToIntBiFunction.java

+ * Apply a function to the input argument,

argument -> arguments

---


Aside: it would be much easier to maintain consistent style if we used a "template" to define the main outline of each family of interfaces and generated the specializations from that (similar to how we generate the various bytebuffer classes).

Cheers,
David
------



On 16/02/2013 6:13 AM, Mike Duigou wrote:
Hello All;

This patch introduces a number of new functional interfaces for use by the 
lambda libraries. Also included are some name changes following JSR-225 EG 
review. The new interfaces are:

BiConsumer
BiFunction
BiPredicate
BooleanSupplier
DoublePredicate
IntPredicate
LongPredicate
ObjDoubleConsumer
ObjIntConsumer
ObjLongConsumer
ToDoubleBiFunction
ToDoubleFunction
ToIntBiFunction
ToIntFunction
ToLongBiFunction
ToLongFunction

Renames:

Block -> Consumer
BiBlock -> BiConsumer
IntBlock -> IntConsumer
DoubleBlock -> LongConsumer
LongBlock -> LongConsumer
UnaryOperator.operate -> UnaryOperator.apply
LongUnaryOperator.operateAsLong -> LongUnaryOperator.applyAsLong
DoubleUnaryOperator.operateAsDouble -> DoubleUnaryOperator.applyAsDouble
IntUnaryOperator.operateAsInt -> IntUnaryOperator.applyAsInt
LongBinaryOperator.operateAsLong -> LongBinaryOperator.applyAsLong
DoubleBinaryOperator.operateAsDouble -> DoubleBinaryOperator.applyAsDouble
IntBinaryOperator.operateAsInt -> IntBinaryOperator.applyAsInt

All of the changes outside the java.util.function package are made to 
accommodate these renamings.

The webrev is located at:

http://cr.openjdk.java.net/~mduigou/JDK-8004561/1/webrev/

and specdiff for the java.util.function package is at:

http://cr.openjdk.java.net/~mduigou/JDK-8004561/1/specdiff/

Thanks!

Mike


Reply via email to