To Prof. Harley Flanders:
Nearly everything you said about new types and operator overloading is already supported in Free Pascal:
http://www.freepascal.org/docs-html/ref/refch12.html
If you need new types, just implement them yourself using an array of byte or a record and operator overloading. Then code all the operations for your new type, including operations involving other types. You can also code the operations in assembler if you like. Something like:
type TMaxPowerFloat = type array[0.19] of Byte;
Operator + (r : real; z1 : TMaxPowerFloat) z : TMaxPowerFloat; begin // Implement summing a real with a TMaxPowerFloat end;
And so on
I would love to see Int16, Int32, Int64 and Int128, and their unsigned counterparts.
You can implement yourself again, with operator overloading.
Allow genuine operator overloading, such as operator "+" (const X, Y: MyType): MyType; operator "*" (const X: Integer; const Y: IntegerVector): IntegerVector;
It should be possible to overload all the standard operators: + - * / ^ = <> <= >= > <
Already supported in FPC
So one could define TMatrix, with elements in TRing, and define matrix multiplication A*B and Det (determinant) without specifying the elements in advance, and specialize them to any ring, such as the rings of rationals, of polynomials with complex coefficients, etc.
Already supported in FPC through generics, which are very similar to C++ templates:
http://www.freepascal.org/docs-html/ref/refch8.html
http://wiki.freepascal.org/Generics
Type generic TList<_T>=class(TObject) type public TCompareFunc = function(const Item1, Item2: _T): Integer; var public data : _T; procedure Add(item: _T); procedure Sort(compare: TCompareFunc); end;
Add Print Methods for TMemo, TStringGrid, TImage, and maybe a few other components.
Just send over a unit to Lazarus which has code to print all the standard components and we will add it.
I'm not sure if a Print method directly in the classes will work because the printer support is in a separate package.
Any modern Pascal should use unicode, with all character and string procedures modified accordingly. This is a big advance Delphi started a year or so ago
The Lazarus Component Library has full support for Unicode since 2008, 1 year before Delphi.
Please take a look at the following Windows CE russian application made in Lazarus:
http://wiki.lazarus.freepascal.org/germesorders