22-Mar-2013 14:58, bearophile пишет:


Jacob Carlborg:

auto (lof, loa) = heap.front;

How is front suddenly returning two elements?

It is not returning two elements. In D you can't return two elements. It
is returning a 2-Tuple. You see the 2-tuples are built by the map() and
then used to create a heap:

auto heap = sf.map!(((c, f)) => tuple(f, ...)).array.heapify!q{...};


And this proposed syntax performs pattern matching on that 2-tuple,
unpacking it into two variables (Hara has implemented this already):

auto (lof, loa) = ...;

In Haskell, Scala, Python, F#, etc, the semantics and syntax are similar.


I'd hate any solution that distances ordinary structs, library tuples and fixed-sized arrays. If anything these should be trivially substitutable where makes sense.

Thus I'd go for struct destructuring syntax like (god forgive) JS6.

I even had proposal to about same effect, but it was ignored. Among other things it replace .tupleof with more general destructuring facility.

--
Dmitry Olshansky

Reply via email to