[fpc-devel] Templates / Generics Syntax

Marc Weustink marc.weustink at cuperus.nl
Fri Nov 4 13:44:55 CET 2005


Mattias Gaertner wrote:
> 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.

How would you have declared the proc, and how do you call it. I don't 
see a problem yet.

GenericProc(TObject)(some params) you mean ?

Marc

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



More information about the fpc-devel mailing list