On Thu, 16 Jul 2015, Marcos Douglas wrote:

On Thu, Jul 16, 2015 at 11:44 AM, Michael Van Canneyt
<mich...@freepascal.org> wrote:


On Thu, 16 Jul 2015, Maciej Izak wrote:

sadly - no, only in Delphi mode. btw. this thing keep me away from objfpc.


That seems like a very strange reason to me.

The fact that you must type 1 word in certain places keeps you from using an
otherwise useful mode ?
This word is there for clarity, It is meant to help you, to make explicit
you are in fact specializing a new type.

Yes, but do you think this is more verbose unnecessarily? Because the
syntax TFoo<T> (I mean this "<>") show us that is a generic, don't?

The Lazarus also has some troubles with the code completion using this:
TFoo = class(TInterfacedObject, specialize ICloneable<TFoo>)

Lazarus is not alone, even I have trouble with this :)


Sometimes the IDE shows an error in interface declaration, but compiles.
So, to not receive these errors I have to create a new type:

TFoo = class; //forward

IFooCloneable = specialize ICloneable<TFoo>;

TFoo = class(TInterfacedObject, IFooCloneable)
//...
end;
...making even more verbose.

Pascal is a verbose language. If you want terse, use C++ or something like it.

The whole generics mess that Delphi made goes completely against the Pascal dictum that you must declare something before you can use it.

To me, the above verbose construction makes absolute sense. It has been so 
since day 1:

PRecord = ^TRecord;
TRecord = record
  a : integer;
  next : PRecord;
end;

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to