Hi all,
FPC uses 2 keywords for generics: "generic" for generic definition block, and
"specialize" for generic type implementation. I think the "generic" keyword is
quite redundant, useless, and too verbose since generics already use pair of <>
to define a generics type. Generics definition should be enough described using
the pair of <> only without "generic" keyword.
The example below should be very obvious to the compiler:
(*** begin of example ***)
type
TRegularIntegerArray: array[0..100] of integer;
TGenericArray<T>: array[0..100] of T;
var
IntegerArrayFromGeneric = specialize TGenericArray<integer>;
(*** end of example ***)
Or, if we MUST use "generic" keyword to help compiler parse the code, also make
the syntax less cryptic, I suggest using the example below:
(*** begin of example ***)
type
TList = generic class(TObject)
type public
TCompareFunc = function(const Item1, Item2: T): Integer;
var public
data : T;
procedure Add(item: T);
procedure Sort(compare: TCompareFunc);
end of T;
TGenericArray: generic array[0..100] of T;
var
PointerListFromGeneric = specialize TList for Pointer;
IntegerArrayFromGeneric = specialize TGenericArray for Integer;
(*** end of example ***)
Though I agree that a generic MUST have a clear structure definition (in type
section) before it's being used (in var section), since generic is all about
type definition, also for ease of readability.
Any comments?
-Bee-
has Bee.ography at:
http://beeography.wordpress.com
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal