On Fri, 04 Nov 2005 13:44:55 +0100 Marc Weustink <[EMAIL PROTECTED]> wrote:
> Mattias Gaertner wrote: > > On Fri, 04 Nov 2005 10:47:42 +0100 > > Marc Weustink <[EMAIL PROTECTED]> 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 ? Example: procedure MyProc(T); // generic procedure without parameters ver i: T; begin ... end; procedure MyProc(T: TClass); // non generic procedure begin end; Call MyProc(TObject); What will happen? Mattias _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel