[fpc-pascal] Feature proposal: function-based assignment operators

Benito van der Zander benito at benibela.de
Thu Mar 28 18:09:45 CET 2013


>
>
> Declare a custom function and mark it inline for efficiency. That also 
> allows you to document it properly, have different implementations 
> depending on the parameter types and so on. 

that's overkill if it is only an internal datastructure


> our time would be better spent trying to persuade the core developers 
> to tolerate extra operators like ⌊ for floor(), and then working out 
> how to implement them >:-) 
Or allow unicode identifier, and than defining ⌊ for ⌊= would just be a 
special case of func=


On 03/28/2013 04:45 PM, Mark Morgan Lloyd wrote:
> Benito van der Zander wrote:
>> Hi,
>> quite often you need to change a value relatively to another value.
>> For example:
>>
>>   array1[array2[i]] := array1[array2[i]] + 42;
>>
>> Luckily this can be written as
>>
>>   array1[array2[i]] += 42;
>>
>> Which is nice.
>>
>> However, sometimes you do not need addition, but the minimum.
>> For example:
>>
>>    array1[array2[i]] := min(array1[array2[i]], 42);
>>
>> Now, you need to repeat all the array indices.
>>
>> Which is very ugly.
>>
>> So there should be an alternative syntax, similar to += :
>> I.e.:
>>
>>    array1[array2[i]] min= 42;
>
> Declare a custom function and mark it inline for efficiency. That also 
> allows you to document it properly, have different implementations 
> depending on the parameter types and so on.
>
> There really are limits to the extent that the underlying Pascal 
> should be mangled further. Your time would be better spent trying to 
> persuade the core developers to tolerate extra operators like ⌊ for 
> floor(), and then working out how to implement them >:-)
>
> array1[array2[i]] := array1[array2[i]] ⌊ 42;
> array1[array2[i]] ⌊= 42;
>



More information about the fpc-pascal mailing list