On Fri, 04 Nov 2005 12:56:03 +0100 Thomas Schatzl <[EMAIL PROTECTED]> 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. > > No, already after the second token after the opening "<". It must either > be a ",", or the closing bracket. .. or '.'. E.g. generic<unit.type> > Assuming that you disallow something like generic_type<generic_type2<... > Even that limitation can be overcome by disallowing directly nested > generic use specification. Something like > > type > TGeneric2 = generic_type2<...>; > > generic_type<TGeneric2 ... > > could be allowed however. I second that. We should try to avoid anonymous types (generic<generic<type>>). It's bad programming style. >[...] > From: Mattias Gaertner <[EMAIL PROTECTED]> > > On Thu, 3 Nov 2005 19:59:40 +0100 (CET) > > Daniƫl Mantione <[EMAIL PROTECTED]> wrote: > > Right. I didn't think of that. > > > > What about edged brackets? > > > > type > > TGenericClass[T,F] = class > > public > > procedure Add(Item: T; Flag: F); > > end; > > > > procedure TGenericClass.Add(Item: T; Flag: F); > > // Note: No redundant [T,F] after TGenericClass. > > begin > > end; > > > > type TListOfComponent = TGenericList[TComponent]; > > > > Analog: > > type TGenericListClass[T] = class of TGenericList[T]; > > type PGenericRecord[T] = ^TGenericRecord[T]; > > > > procedure GenericProc[T](Param: T); > > begin > > end; > > I think this has a similar problem to the other one. Consider this: > > my_procedure[... > > where my_procedure isn't an instantiation of a method using the generic > but a function returing an array of something. You mean for example: function my_function: TList; where TList has a default indexed property. Ok, so (! !) would be better. But see other mails, about where Delphi goes. It seems they will use the <> syntax. > Not completely sure whether this is a problem though... depends on the > implementation. Mattias _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel