Bitten by the lambda parameter name

John Rose john.r.rose at oracle.com
Fri Jul 19 14:55:39 PDT 2013


On Jul 18, 2013, at 5:40 PM, Zhong Yu <zhong.j.yu at gmail.com> wrote:

> Hi John, what name do you propose for the lambda parameter?

I don't have a solid preference or proposal.  Most of the alternatives you mention are workable in one situation or another.  One choice doesn't fit all situations.

This thread does show one reason why functional languages tend to have a syntax for "no-name" parameters.  (Cue slide on K combinators.)

The substantial issue here, IMO, is API support for what is sometimes called "auto-vivification" of nested data structures, as in this broken code:
  Map<J, Map<K, List<V>>> bimap = ...;
  bimap.get(j).get(k).add(v);  // BAD NPE

Using "IfAbsent" methods, a fix might look something like:
  bimap.computeIfAbsent(j, TreeMap<>::new).computeIfAbsent(k, ArrayList<>::new).add(v);

...except for the extra key arguments, which seem spurious in this use case.

— John


More information about the lambda-dev mailing list