Values may have limitations (constraints), types derived from other types which
only have a greater set of contraints are called subtypes.
discriminant values.
How to test parameterized modules if the params match the constraints? Like is this an enum and does it have a 'equals'?
.base (base type? ADA)
.succ(), .pred() next/prious value of
Have an explicit modular thing to allow wraparounds?
Is 'x' a wrapper for its value (like strings), or is 'x' a specific thing with identity unlike another 'y' which has identical values.
Make distinction between const values which can be copied into source, and const variables which can't (defined in lib and lib can change...)
David Goldberg, "What Every Computer Scientist Needs To Know About Floating Point Arithmetic," ACM Computing Surveys, vol. 23, pp. 5-48, 1991.
Read about 'mono' (qv .Net)
By default 'current element' in a loop is weakly 'const'. Declare as alterable to overwrite (and change the value of the current element)
Program specialization, also known as partial evaluation, is an automatic tool for program optimization, similar in concept to but in several ways stronger than a highly optimizing compiler. It is a source-to-source staging transformation: program pgm together with partial data s are transformed into an often faster specialized version pgm-s by precomputing parts of pgm that depend only on s.
Builtin to indicate compiler extension (floats?)
Type-equality
set support
'super' calls different not dot notation? How about module.routine?
Enum as always prefixed with their enum type name: enum foo (bar); foo.bar;
'Collection' objects which can do foreach
Attributes???
Namespace support
Delegates are vulnerable (see here
Synchronized functions and blocks (using a mutex)
Reread later: modules
Inplace change indicated by '!'