|
From: | Ralf Hemmecke |
Subject: | Re: [Axiom-developer] Axisp news |
Date: | Wed, 27 Jun 2007 00:39:26 +0200 |
User-agent: | Thunderbird 2.0.0.4 (X11/20070604) |
I must say, no matter whether it is syntactic sugar or not, a definition of the form (*) D(P : Polynomial (R : Ring)) : ... == ... would confuse me. How am I supposed to used that? Should I writeBoy, my first email this morn had a few more typos than I would have liked. Ill try to ensure I have at least one cup of coffee before sitting down to write an email :) In the scheme I was (trying, badly) to suggest would have looked as follows: D(p : Polynomial (R : Ring)) : ... == .. Notice the p is lowercased, hense denoting a domain value.
Oh, you would like to turn a convention into a language construct. I have programmed enough in Aldor to be able to say, that is a bad thing. Note that + or 1 can be used to denote identifiers in Aldor. Are they lower or upper case?
Now suppose I define define MyPolyCat:Category == Polynom(Integer) with ... MyPoly: MyPolyCat == add ... Now can I write D MyPoly ??? (Note that it doesn't exactly match your pattern (*).) Or should I rather write D(Integer, MyPoly) even with just the definition (*)? I cannot see that I would like such sugar.Ok, sorry for the confusion. Using your example, I would have written: D(P : Polynom(R : Ring)) ... Then yes, you would write `D MyPoly'.
So then let's go on. How would MyPoly now tell you that it is defined over Integer? Its type is MyPolyCat (there is still no Integer). So in order to find out that the Argument I give you fits your pattern, you have to look inside the category hierarchy. OK, should be doable, but is more than just pattern matching. Still, I don't like it.
Suppose you would have something like DAldor(R: Ring, D1: CatA(R), D2: CatB(R)): ... Then your way would probably lead to DSteve(D1: CatA(R: Ring), D2: CatB(R: Ring)): ... That is needless doubly typing "Ring" and even worse, it is ambiguous. Who does tell me that this definition would be equal or different from DSteve(D1: CatA(R: Ring), D2: CatB(S: Ring)): ...I must say, if you modify the language in that direction, I am the first who doesn't follow your direction.
Ralf
[Prev in Thread] | Current Thread | [Next in Thread] |