[fpc-devel] RFC: Support for new type "tuple" v0.1

Mark Morgan Lloyd markMLl.fpc-devel at telemetry.co.uk
Sat Jan 26 21:05:31 CET 2013


Sven Barth wrote:

>> I'd vote for
>> having implicit compatibility between a single element and a tuple i.e.
>> something like
>>
>>  > (x, y, z) := Tuple(0);
>>
>> provided that x, y and z are all the same type. Granted that the same
>> effect can be had by overlaying the assignment operator but this would
>> save having to use per-element assignment or an intermediate array.
>>
> 
> I don't know... this is again the "the right side is evaluated without 
> knowing the left side" problem. Thus it is not known what types 
> "Tuple(0)" should return. (Note: this "problem" does not apply to group 
> assignments as proposed, because if necessary every value could just be 
> copied to the stack and then retrieved (of course the compiler will 
> optimize here...)

In that case how about

type TInteger2Tuple= tuple of (integer, integer);

var  i2: TInteger2Tuple;

begin
   i2 := TIntegerTuple(0);

for the very specific case where the tuple on the LHS is only allowed 
elements of a single type (or at the very least must be 
assignment-compatible with each other) and there is only a single 
element on the RHS.

Since under normal circumstances a tuple contains more than one element, 
this couldn't be confused with a cast.

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]



More information about the fpc-devel mailing list