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)
----------------------------------------------------------------

Reply via email to