[fpc-devel] Templates / Generics Syntax

Mattias Gaertner nc-gaertnma at netcologne.de
Fri Nov 4 13:38:06 CET 2005


On Fri, 04 Nov 2005 10:47:42 +0100
Marc Weustink <marc.weustink at cuperus.nl> wrote:

> Daniƫl Mantione wrote:
> > 
> > Op Thu, 3 Nov 2005, schreef Mattias Gaertner:
> > 
> > 
> >>Here is a proposal of the syntax:
> >>
> >>type
> >>  TGenericClass<T,F> = class
> >>  public
> >>    procedure Add(Item: T; Flag: F);
> >>  end;
> > 
> > 
> > This syntax is almost impossible to implement since in one of your other
> > 
> > mails the symbols to mark the parameters appear in regular source code:
> > 
> > begin
> >   generictypeA<integer>.create
> > end.
> > 
> > It will be very hard for the parser to see the difference in advance 
> > between:
> > 
> >   variable<integer(another_var)
> >   generic_type<integer
> > 
> > Only when the > symbol is parsed the result is known.
> > 
> > Maybe the parser may be able lookup the type first and make a decision 
> > based on that, but it would be in the middle of a recursive expression 
> > parse designed for infix operators.
> > 
> > Also in C++ this sometimes causes trouble where you need to change your 
> > code notation so the compiler eats it. I don't know if this proposal 
> > suffers from this mess, but we should avoid at all cost to import it
> > into  Pascal.
> 
> On the wiki pages some of my remarks got lost (or I didn't write them 
> down) but when I first looked at the <> notation style it looks very 
> unpascalish for me. I like more to add a new keyword for it, like the 
> samples wiht generic or template)
> 
> BTW,
> what woud be the problem with
> 
> type
>    TMySpecificClass = TGenericClass(TObject, Integer);

What about proc generics:

GenericProc(TObject)

This can be ambigious.

 
> var
>    MSC: TMySpecificClass;
> 
> begin
>    MSC := TMySpecificClass.Create


Mattias



More information about the fpc-devel mailing list