[fpc-pascal] Feature announcement: Dynamic array extensions
Mark Morgan Lloyd
markMLl.fpc-pascal at telemetry.co.uk
Sat Jun 2 10:53:41 CEST 2018
On 02/06/18 08:00, Ryan Joseph wrote:
>> On Jun 2, 2018, at 2:42 PM, Sven Barth via fpc-pascal <fpc-pascal at lists.freepascal.org> wrote:> > It wasn't me who implemented that part. I personally had planned to do it with a warning for existing overloads, but Florian beat me to it and implemented it this way. Though when asked by me he did say that we'll wait and see if people complain... So *maybe* we'll change this.>
> btw why can’t there be both? You can have multiple + operators for any given dynamic array type can’t you?
> type TArrayOfInteger = array of integer;
> operator + (left: TArrayOfInteger; right: integer): TArrayOfInteger;var i: integer;begin for i := 0 to high(left) do left[i] += 1;end;
> operator + (left: TArrayOfInteger; right: TArrayOfInteger): TArrayOfInteger;begin result := Concat(left, right);end;
Agreed, both are extremely useful and have an intuitively unambiguous
meaning (unlike - which can be useful but doesn't have an unambiguous
meaning).
However as Dennis points out + is also essential for vector operations.
Perhaps either leaving it to the programmer to define what's needed
would be the best approach, or alternatively splitting dynamic arrays
into mathematical vectors and non-mathematical collections. Or relaxing
the requirement that only predefined operators can be redefined, so that
something like _ could be used for concatenation.
--
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-pascal
mailing list