As I understand the problem right,
there is a need for classes computed dynmaically
like remainder rings polynomial rings and so forth.
Let us call the mathematical Object R(a) where a
is the (runtime) parameter which determines the object needed.
This can be the variable set (and ordering), the modulo and so forth.
In principal I see three ways:
A) Use the sample argument:
The type T used is powerful enough to hold any element
(all R(a) for any a), and a suitable R(a)
can be deduced from an element of type T.
Ex: enumerating all variables found in a polynomial.
This is the sample approach, because for generating
a constant within R(a) somehow the parameter
a has to go into the constant.
B) Make the parameter $a$ explicit. Use a pair (a,v) for
every element: v is the value, a is the universe parameter.
Then, constants are a function requiring a.
In my opinion this makes sense, since strictly mathematically
constants like a 0 in one ring and another
are totally different. This can be seen with the two semigroups found in
a Ring (with 1), there are two different neutral elements.
However thsi approach is not nice, because the parameter a
has to be carried around everywhere, and has to be given in
an algorithm at a lot of places. It is an challenge for the compiler
writers to eliminate this constant wherever possible.
C) Make this need a language construct, that is make
types with value parameters. Then it is explicit to the compiler,
what is only type information and what is "value". The problem is,
that the type information is run-time dependent and has the character
of a value.
Some problems:
say we define a operation crt
crt :: R(a) -> R(b) -> R(c)
(Combination of two numbers in Z/a and Z/b into Z/(a*b),
if ggt(a,b)=1)
The implementation of crt would need the values a and b.
The question is when the condition c=a*b is checked.
Can the compiler do that? In a well-constructed CA system where
crt is used, a,b and c are constructed in a way to allow this.
But this problem remains with A and B anyway and in those cases
it may be much harder for the compiler to figure things out.
Though I guess there are no news in here, I hope to get the
discussion more technically and less "political"/emotional
Andreas
---------------------------------------------------------------
Andreas C. Doering
Medizinische Universitaet zu Luebeck
Institut fuer Technische Informatik
Tel.: +49 451 500-3741, Fax: -3687
Email: [EMAIL PROTECTED]
Home: http://www.iti.mu-luebeck.de/~doering
"The fear of the LORD is the beginning of ... science" (Proverbs 1.7)
----------------------------------------------------------------