You can subscribe to this list here.
2007 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}
(73) 
_{Sep}
(57) 
_{Oct}
(138) 
_{Nov}
(91) 
_{Dec}
(99) 

2008 
_{Jan}
(91) 
_{Feb}
(53) 
_{Mar}
(37) 
_{Apr}
(125) 
_{May}
(176) 
_{Jun}
(23) 
_{Jul}
(135) 
_{Aug}
(119) 
_{Sep}
(26) 
_{Oct}
(38) 
_{Nov}
(46) 
_{Dec}
(11) 
2009 
_{Jan}
(4) 
_{Feb}
(2) 
_{Mar}
(5) 
_{Apr}
(15) 
_{May}
(4) 
_{Jun}
(18) 
_{Jul}
(1) 
_{Aug}
(4) 
_{Sep}
(17) 
_{Oct}
(9) 
_{Nov}
(14) 
_{Dec}
(11) 
2010 
_{Jan}
(9) 
_{Feb}
(6) 
_{Mar}
(1) 
_{Apr}
(1) 
_{May}
(4) 
_{Jun}
(3) 
_{Jul}

_{Aug}
(10) 
_{Sep}
(7) 
_{Oct}
(7) 
_{Nov}
(36) 
_{Dec}
(23) 
2011 
_{Jan}
(2) 
_{Feb}
(1) 
_{Mar}
(1) 
_{Apr}
(11) 
_{May}
(5) 
_{Jun}
(17) 
_{Jul}
(2) 
_{Aug}
(26) 
_{Sep}
(14) 
_{Oct}
(51) 
_{Nov}
(39) 
_{Dec}
(7) 
2012 
_{Jan}
(24) 
_{Feb}
(7) 
_{Mar}
(9) 
_{Apr}
(2) 
_{May}
(9) 
_{Jun}
(7) 
_{Jul}
(3) 
_{Aug}
(1) 
_{Sep}
(8) 
_{Oct}
(12) 
_{Nov}
(1) 
_{Dec}

2013 
_{Jan}

_{Feb}

_{Mar}

_{Apr}
(35) 
_{May}
(28) 
_{Jun}
(14) 
_{Jul}
(10) 
_{Aug}
(3) 
_{Sep}
(6) 
_{Oct}

_{Nov}
(1) 
_{Dec}

2014 
_{Jan}

_{Feb}

_{Mar}

_{Apr}
(4) 
_{May}
(3) 
_{Jun}
(2) 
_{Jul}
(2) 
_{Aug}
(2) 
_{Sep}
(1) 
_{Oct}
(3) 
_{Nov}
(5) 
_{Dec}
(8) 
2015 
_{Jan}
(3) 
_{Feb}
(2) 
_{Mar}

_{Apr}

_{May}
(1) 
_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}
(1) 
2016 
_{Jan}
(5) 
_{Feb}
(4) 
_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

S  M  T  W  T  F  S 






1

2
(2) 
3

4

5

6
(1) 
7
(1) 
8

9

10
(1) 
11

12
(7) 
13
(3) 
14

15

16

17
(1) 
18
(1) 
19

20

21

22

23

24

25
(6) 
26
(17) 
27
(4) 
28
(5) 
29
(4) 

From: Bill Page <bill.page@ne...>  20080229 15:24:18

On 2/29/08, Ralf Hemmecke wrote: > > On 02/29/2008 09:27 AM, Martin Rubey wrote: > > make SQMATCAT inherit from MATCAT. > > > I am sure you don't want that. > > We have > > MatrixCategory(R,Row,Col): Category == Definition where > R : Ring > Row : FiniteLinearAggregate R > Col : FiniteLinearAggregate R > > Definition ==> TwoDimensionalArrayCategory(R,Row,Col) with > ... > coerce: Col > % > transpose: Row > % > horizConcat: (%,%) > % > vertConcat: (%,%) > % > ... > There are even more functions that allow the result to be a > nonsquare matrix. Perhaps I am missing something but I do not understand why you think that if MatrixCategory is used in the definition of SquareMatrix that these operations would result in a nonsquare matrix. % means "this *domain* ", not "this category". > > SquareMatrix *should not* inherit from MatrixCategory!!! > That does not make any sense. Surely a SquareMatrix (no matter exactly whatever that is) is a subtype of MatrixCategory (whatever that is). So it makes perfectly good sense for SquareMatrix to be a subcategory of MatrixCategory category. > The better way would be to factor out a subcategory that doesn't > change the structure of the matrix and let SquareMatrix and > MatrixCategory inherit from that. > I do not see any structure of SquareMatrix that is in conflict with MatrixCategory. SquareMatrix is just something that has more structure, i.e. it has some more operations and some of the inherited operations become degenerate (since nrows=ncols). It seems to me that this is quite normal in the Axiom library. Regards, Bill Page. 
From: Francois Maltey <fmaltey@ne...>  20080229 14:08:03

Dear Martin and Ralf, > In Aldor it might be possible to do > better, but not in SPAD: > > (M: RectangularMatrix(n, m, R)) * (N: RectangularMatrix(m, k, R)) > > RectangularMatrix(n, k, R) > > To be honest, I doubt that this would be very useful. If this signature is too subtle for axiom, then bad size matrix must produce an error, and per homogeneity, all other mismatchs over dimensions must also produce an error. But... type must remain fine in order to verify as easily as possible the CayleyHamilto theorem. Good luck and courage. F. 
From: Martin Rubey <martin.rubey@un...>  20080229 09:39:48

Ralf Hemmecke <ralf@...> writes: > On 02/29/2008 09:27 AM, Martin Rubey wrote: > > make SQMATCAT inherit from MATCAT. > > I am sure you don't want that. I'm not so sure... > We have > > MatrixCategory(R,Row,Col): Category == Definition where > R : Ring > Row : FiniteLinearAggregate R > Col : FiniteLinearAggregate R > > Definition ==> TwoDimensionalArrayCategory(R,Row,Col) with > ... > coerce: Col > % > transpose: Row > % > horizConcat: (%,%) > % > vertConcat: (%,%) > % > ... > > There are even more functions that allow the result to be a nonsquare > matrix. I know that. However, MatrixCategory also contains many functions that only make sense for square matrices. > The better way would be to factor out a subcategory that doesn't change the > structure of the matrix and let SquareMatrix and MatrixCategory inherit from > that. This is probably a good possibility, I'll look into it. The other one is to throw errors when dimensions do not fit, which is the current approach. One problem is the "categorical" definition of multiplication of rectangular matrices  what should it's signature be? For me, it's fine to have multiplication in MatrixCategory... In Aldor it might be possible to do better, but not in SPAD: (M: RectangularMatrix(n, m, R)) * (N: RectangularMatrix(m, k, R)) > RectangularMatrix(n, k, R) To be honest, I doubt that this would be very useful. Martin 
From: Ralf Hemmecke <ralf@he...>  20080229 09:27:21

On 02/29/2008 09:27 AM, Martin Rubey wrote: > make SQMATCAT inherit from MATCAT. I am sure you don't want that. We have MatrixCategory(R,Row,Col): Category == Definition where R : Ring Row : FiniteLinearAggregate R Col : FiniteLinearAggregate R Definition ==> TwoDimensionalArrayCategory(R,Row,Col) with ... coerce: Col > % transpose: Row > % horizConcat: (%,%) > % vertConcat: (%,%) > % ... There are even more functions that allow the result to be a nonsquare matrix. SquareMatrix *should not* inherit from MatrixCategory!!! The better way would be to factor out a subcategory that doesn't change the structure of the matrix and let SquareMatrix and MatrixCategory inherit from that. Ralf 
From: Bill Page <bill.page@ne...>  20080228 05:15:44

Gaby, I am testing: http://axiomwiki.newsynthesis.org/206InterpreterCodeGenerationFailedForFunctionReturningAType that you marked "fixed in OpenAxiom1.2.0". Refer to the end of the issue report where a bug is shown in which shows the error message "not a type". On the axiomwiki I ran this example with OpenAxom20080128. Below I have a different problem with a more recent version. It seems that I can no longer evaluate this function that returns a Domain. [root@... openaxiomsrc]# openaxiom GCL (GNU Common Lisp) 2.6.8 CLtL1 Feb 27 2008 16:36:01 Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl) Binary License: GPL due to GPL'ed components: (BFD UNEXEC) Modifications of this banner must retain notice of a compatible license Dedicated to the memory of W. Schelter Use (help) to get some basic information on how to use GCL. Temporary directory for compiler files set to /tmp/ OpenAxiom: The Open Scientific Computation Platform Version: OpenAxiom 1.2.020080222 Built on Wednesday February 27, 2008 at 22:45:14  Issue )copyright to view copyright notices. Issue )summary for a summary of useful system commands. Issue )quit to leave OpenAxiom and return to shell.  (1) > (1) > tt:INT>Domain Type: Void (2) > tt(x)==(x=0 => Integer; Float) Type: Void (3) > tt(0) Compiling function tt with type Integer > Domain >> System error: Value stack overflow. (3) > Can you reproduce this problem? I also have a second, perhaps related problem. When I try to Browse for Domain in Hyperdoc and then click on Exports or Operations (and other similar buttons) I get the message: You gave an invalid type: "Domain()" Regards, Bill Page. 
From: Alfredo Portes <doyenatccny@gm...>  20080228 04:15:57

On my box: alfredo@...:/usr/lib$ ls l libXt* rwrr 1 root root 429164 20070521 08:27 libXt.a lrwxrwxrwx 1 root root 14 20071022 22:27 libXt.so > libXt.so.6.0.0 lrwxrwxrwx 1 root root 14 20071021 13:46 libXt.so.6 > libXt.so.6.0.0 rwrr 1 root root 326564 20070521 08:27 libXt.so.6.0.0 rwrr 1 root root 17630 20071114 06:05 libXtst.a lrwxrwxrwx 1 root root 16 20080213 18:11 libXtst.so > libXtst.so.6.1.0 lrwxrwxrwx 1 root root 16 20080213 18:11 libXtst.so.6 > libXtst.so.6.1.0 rwrr 1 root root 17500 20071114 06:05 libXtst.so.6.1.0 On Wed, Feb 27, 2008 at 10:43 PM, Bill Page <bill.page@...> wrote: > Alfredo, > > > ... > > > I have a box with Ubuntu (currently running 8.04 alpha). > > I see the symbolic link to libXt.so.6 > > > > Maybe it is the box you are testing on. Maybe somebody > > else can verify that the link is there in 7.10. > > Just to be precise could you confirm that you see *both* > > > libXt.so.6 > libXt.so.6.0.0 > > and > > libXt.so > libXt.so.6.0.0 > > symbolic links in /usr/lib? > > I only see the first one, but the openaxiom configure looks for the second one. > > I am actually building openaxiom using the new release candidate for > the KDE version of andLinux under Windows. It runs ubuntu 7.10 with > colinux. My understanding is that it exactly the same as the native > ubuntu distribution, but perhaps that is not the case. > > Regards, > Bill Page. > 
From: Bill Page <bill.page@ne...>  20080228 03:43:19

Alfredo, > ... > I have a box with Ubuntu (currently running 8.04 alpha). > I see the symbolic link to libXt.so.6 > > Maybe it is the box you are testing on. Maybe somebody > else can verify that the link is there in 7.10. Just to be precise could you confirm that you see *both* libXt.so.6 > libXt.so.6.0.0 and libXt.so > libXt.so.6.0.0 symbolic links in /usr/lib? I only see the first one, but the openaxiom configure looks for the second one. I am actually building openaxiom using the new release candidate for the KDE version of andLinux under Windows. It runs ubuntu 7.10 with colinux. My understanding is that it exactly the same as the native ubuntu distribution, but perhaps that is not the case. Regards, Bill Page. 
From: Alfredo Portes <doyenatccny@gm...>  20080228 03:21:16

Hi Bill, I have a box with Ubuntu (currently running 8.04 alpha). I see the symbolic link to libXt.so.6 Maybe it is the box you are testing on. Maybe somebody else can verify that the link is there in 7.10. Regards, Alfredo On Wed, Feb 27, 2008 at 9:23 PM, Bill Page <bill.page@...> wrote: > Gaby, > > When building openaxiom on a recent release of unbuntu (7.10) I found > that ./configure failed to find the required 'lXt' library during the > 'checking for X' confidence test. In /usr/lib I see: > 'libXt.so.6 > libXt.so.6.0.0' but no symbolic link for 'libXt.so'. > After adding this symbolic link everything went ok, but I wonder if > there might not be a better test of X ... or would you consider this > distribution broken? > > Regards, > Bill Page. > >  > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > openaxiomdevel mailing list > openaxiomdevel@... > https://lists.sourceforge.net/lists/listinfo/openaxiomdevel > 
From: Bill Page <bill.page@ne...>  20080228 02:23:16

Gaby, When building openaxiom on a recent release of unbuntu (7.10) I found that ./configure failed to find the required 'lXt' library during the 'checking for X' confidence test. In /usr/lib I see: 'libXt.so.6 > libXt.so.6.0.0' but no symbolic link for 'libXt.so'. After adding this symbolic link everything went ok, but I wonder if there might not be a better test of X ... or would you consider this distribution broken? Regards, Bill Page. 
From: Ralf Hemmecke <ralf@he...>  20080227 17:05:03

> For an educational purpose we often must code one or two loops or > tests. And I can only use interpreter with students. My purpose is > about this << concrete >> mathematics, not teach a new language > and the domains. I understand your problem. But the only suggestion I can give here is: Wait 30 more years. ;) If Axiom is unable to speak my mathematical language now, perhaps it is faster that I learn a new language than Axiom learning mine? Ralf 
From: Francois Maltey <fmaltey@ne...>  20080227 16:32:15

Hi Ralf, Martin, Gaby and all, I agree with all the Ralf mail, but I pain to explain that I don't see how to use easily pairs/tuples in axiom when the coordonates aren't of the same type (so I don't speak about Complex which can be a Vector) By example (Integer, Float). Of corse I may use List Any, but I don't think it's the better description of a pair/couple. There is no one type control. There are 1/ List for sequences of the same type L := [11,22,33] 2/ Vector for linear algebra V := vector [a,a+1,a+2] 3/ Set if we don't look at the order S := {4,5,6} or set [4,5,6] 4/ Cross / Record / DirectProduct for product but there is no natural/mathematical syntax. A mathematical consistent syntax might be RR := [ 12, 5.0e7 ] ; RR.1 ; RR.2 The actual Axiom forces to declare the record and choose the field name : RR : Record (a:Integer, b:Float) := [12, 5.0e6] This semantic is far from the other data structures. I expect to have a syntax as near as possible as other data structures. So don't have to declare the record and don't choose the field name. Martin proposes to hide Any. I agree that it might create other usability problems. an other operator as [...] reduces this conflict. [Martin]> However, turning to Axiom again, as soon as we have a type Any in > scope, the interpreter has no way to know whether we mean List Any > or Record(String, INT) with ["a", 1]. > We could, of course, unexpose Any, and introduce unnamed Records, a > function explode and multiple values. I'm not sure whether this > wouldn't create other usability problems. For Ralf :  > if you work in the interpreter, it is probably reasonable to use some > Record construction. However, if you do serious programming [...] I approve axiom promotes > [...] a "mathematical" domain instead of just such a thumb (record) > data structure. For an educational purpose we often must code one or two loops or tests. And I can only use interpreter with students. My purpose is about this << concrete >> mathematics, not teach a new language and the domains. A common example  But imagine I study a sequence u(n) of rational number where u(0) is an integer a. I want to see when u(n) is near of the real limit l. So I buld a list of interessing data (for a next plot). Record (index : NNI = n, initial : INT= a, val : RationalNumber = u(n), error : Float = u(n)  l) Sometime ago Alasdair looks for a pretty > >> for n in 10..30 repeat output [n, factor(2^n1)] Francois 
From: Ralf Hemmecke <ralf@he...>  20080227 11:46:18

Hi Francois, if you work in the interpreter, it is probably reasonable to use some Record construction. However, if you do serious programming, then you should consider Record as being a very low level data structure. That is, you are certainly better off in defining a new type instead of just using Record. For example, suppose, Complex were not yet defined. If you decide to do some computations with complex numbers, it is much better to first think about a reasonable domain that provides all the operations you want, i.e. *you* should define Complex. Clearly, one could do all the computations with Record(re: R, im: R), but would you see at a glance from that record definition that you rely on the usual ring axioms while computing with complex numbers? Sure, defining a new domain is always a burden and it would be better if it had already been done by somebody else, but the Axiom Library is never complete and there will always be cases where a new domain must be defined. I am strongly against using Record at a user interface level. Record should be used inside the library, but always wrapped so that a user sees a "mathematical" domain instead of just such a thumb (record) data structure. Ralf On 02/26/2008 07:06 PM, Francois Maltey wrote: > Dear Ralf and all, > >> In particular [List and] Record provide such bracket function of type [...] >> which allows the usual list construction. >> >> (in Record(a: Integer, b: String, c: Float)) >> bracket: (Integer, String, Float) > % >> which allows >> >> Arec: Record(a:Integer, b:String, c:Float) := [123,"azerty",1.2e3] >> >> What else would you want? > > Indeed, the bug is in my mind... Let me explain : > > In my mind theses two cases aren't equivalent : > > // 1 // List is very easy. > > I only type L := [1,2,3] without type > and I play with L.1, L.2... > > // 2 // Record is too subtle. > > Not only because I use less Record than List > but because // A // I must declare this type > and // B // I must choose the field name. (It's too complex for me) > > So semantics of Record and List seems too different, > and my mind prefer to code without Record. > > Alasdair write to axiommail in "a simle question" (date : 2.2.2008) > >> Sorry about this; I'm a bit out of practice: >> >> for n in 10..30 repeat output [n, factor(2^n1)] >> >> This gives the first n in factored form which I don't want. >> How can I obtain the first n in unfactored form? > > The misunderstanding seems the same : use a list instead of record. > > for n in 10..30 > repeat output [n, factor(2^n1)]@Record(a:Integer,b:Factored Integer) > > And spad/axiom isn't so clear. > I can't get the result I want with my old axiom ! > > So I wait for a automatic translation from/to record in order to simplify > the code I type. > > I have no idea if the operator [...] must be the same or different. > > Have a nice day ! > > Francois 
From: Ralf Hemmecke <ralf@he...>  20080227 09:44:09

> a: Record(Integer == 7, DoubleFloat == 0) > > is not allowed... But maybe that's a bug. Let me quote aldorug.pdf section 14.6: Record: Tuple Type > Type  Records provide the basic updatable structure for aggregate data. Each type argument to Record may be given in any of the following forms: T or id : T or id : T == v. That should explain it. Why Record(Integer, Integer) does not work is probably a bug. However, until now I haven't seen documented (for Aldor) any way that allows selection of an entry of a record with the type as the selector. Actually, the bug above seems to suggest that it should work for different types. Ralf %1 >> #include "aldor" Comp: 110 msec, Interp: 20 msec %2 >> #include "aldorinterp" Comp: 50 msec, Interp: 0 msec %3 >> import from Integer, String; Comp: 20 msec, Interp: 0 msec %4 >> x:Record(Integer, String) := [1,"z"]; () @ Record(AldorInteger, String) Comp: 0 msec, Interp: 40 msec %5 >> x.Integer ^ [L9 C1] #1 (Error) Operator (argument 1 of apply) did not match any possible parameter type. The rejected type is Record(AldorInteger, String). Expected type String. 
From: Martin Rubey <martin.rubey@un...>  20080226 21:05:13

"Bill Page" <bill.page@...> writes: > > By the way Record(Integer, Integer) is not allowed in Aldor. > > I do not understand why, isn't that a bug: > > > > %13 >> import from Record(String, String) > > ...........................^ > > [L13 C29] #1 (Error) Duplicate selector/type pair within > > Record, RawRecord or Union. > > This is not a bug. Aldor is able to use the type information instead > of the labels to select components of the Record (again think of the > formal analogy with Union). Could you give an example (using a Record)? I could not find such a function. Oh sorry, I see: the default value mechanism is the obstacle: With a: Record(i: Integer == 7, f: DoubleFloat == 0) a := [0.1] "works". Curiously, a: Record(Integer == 7, DoubleFloat == 0) is not allowed... But maybe that's a bug. Martin 
From: Bill Page <bill.page@ne...>  20080226 20:47:01

On 26 Feb 2008 19:28:16 +0100, Martin Rubey wrote: > ... > Possibly, this is the reason why Aldor allows Records > also *without* labels: > Allowing Records without labels (oddly not allowed in Axiom) is entirely analogous to allowing Union without labels (which is allowed). > ... > By the way Record(Integer, Integer) is not allowed in Aldor. > I do not understand why, isn't that a bug: > > %13 >> import from Record(String, String) > ...........................^ > [L13 C29] #1 (Error) Duplicate selector/type pair within > Record, RawRecord or Union. > This is not a bug. Aldor is able to use the type information instead of the labels to select components of the Record (again think of the formal analogy with Union). If the types of the components are the same, then this is not possible. Regards, Bill Page. 
From: Martin Rubey <martin.rubey@un...>  20080226 18:28:18

Francois Maltey <fmaltey@...> writes: > Dear Ralf and all, > > > In particular [List and] Record provide such bracket function of type [...] > > which allows the usual list construction. > > > > (in Record(a: Integer, b: String, c: Float)) > > bracket: (Integer, String, Float) > % > > which allows > > > > Arec: Record(a:Integer, b:String, c:Float) := [123,"azerty",1.2e3] > > > > What else would you want? > > Indeed, the bug is in my mind... Let me explain : > > In my mind theses two cases aren't equivalent : > > // 1 // List is very easy. > > I only type L := [1,2,3] without type > and I play with L.1, L.2... > > // 2 // Record is too subtle. > > Not only because I use less Record than List > but because // A // I must declare this type > and // B // I must choose the field name. (It's too complex for me) In fact, A follows from B. In axiom, the interpreter cannot coerce [1, "s"] automatically to Record(a: Integer, b: String), because it has no way to guess the labels. Possibly, this is the reason why Aldor allows Records also *without* labels:  %1 >> #include "aldor" Comp: 70 msec, Interp: 10 msec %2 >> #include "aldorinterp" Comp: 40 msec, Interp: 0 msec %3 >> import from Integer, String, Record(Integer, String) Comp: 10 msec, Interp: 0 msec %4 >> a := [1, "s"] () @ Record(AldorInteger, String) Comp: 0 msec, Interp: 40 msec %5 >> (x,y) := explode a () @ AldorInteger, String Comp: 0 msec, Interp: 0 msec %6 >> x 1 @ AldorInteger Comp: 0 msec, Interp: 60 msec %7 >> y s @ String Comp: 0 msec, Interp: 0 msec %8 >> import from Boolean, Record(String, Boolean) Comp: 0 msec, Interp: 0 msec %9 >> b := ["hi", true] () @ Record(String, Boolean) Comp: 0 msec, Interp: 10 msec %10 >> (r, s) := explode b () @ String, Boolean Comp: 0 msec, Interp: 0 msec %11 >> r hi @ String Comp: 0 msec, Interp: 0 msec %12 >> s T @ Boolean Comp: 0 msec, Interp: 0 msec  of course, the Aldor interpreter does very little guessing, but note that from line %8 onwards, we have two Record types in scope, and the Aldor interpreter is still able to infer the type of b := ["hi", true]. However, turning to Axiom again, as soon as we have a type Any in scope, the interpreter has no way to know whether we mean List Any or Record(String, INT) with ["a", 1]. We could, of course, unexpose Any, and introduce unnamed Records, a function explode and multiple values. I'm not sure whether this wouldn't create other usability problems. By the way Record(Integer, Integer) is not allowed in Aldor. I do not understand why, isn't that a bug: %13 >> import from Record(String, String) ...........................^ [L13 C29] #1 (Error) Duplicate selector/type pair within Record, RawRecord or Union. Martin 
From: Francois Maltey <fmaltey@ne...>  20080226 18:06:50

Dear Ralf and all, > In particular [List and] Record provide such bracket function of type [...] > which allows the usual list construction. > > (in Record(a: Integer, b: String, c: Float)) > bracket: (Integer, String, Float) > % > which allows > > Arec: Record(a:Integer, b:String, c:Float) := [123,"azerty",1.2e3] > > What else would you want? Indeed, the bug is in my mind... Let me explain : In my mind theses two cases aren't equivalent : // 1 // List is very easy. I only type L := [1,2,3] without type and I play with L.1, L.2... // 2 // Record is too subtle. Not only because I use less Record than List but because // A // I must declare this type and // B // I must choose the field name. (It's too complex for me) So semantics of Record and List seems too different, and my mind prefer to code without Record. Alasdair write to axiommail in "a simle question" (date : 2.2.2008) > Sorry about this; I'm a bit out of practice: > > for n in 10..30 repeat output [n, factor(2^n1)] > > This gives the first n in factored form which I don't want. > How can I obtain the first n in unfactored form? The misunderstanding seems the same : use a list instead of record. for n in 10..30 repeat output [n, factor(2^n1)]@Record(a:Integer,b:Factored Integer) And spad/axiom isn't so clear. I can't get the result I want with my old axiom ! So I wait for a automatic translation from/to record in order to simplify the code I type. I have no idea if the operator [...] must be the same or different. Have a nice day ! Francois 
From: Ralf Hemmecke <ralf@he...>  20080226 15:28:06

> What is a "multiple value"? http://www.aldor.org/docs/HTML/chap5.html#8 I don't know more. > What is it's type? I would guess, there is no one type. If at all it would be a multitype. (Don't ask me what that is.) > How is it different > from an object of Cross? What can you do with such "multiple value" > things? Let s: String := "a" i: Integer := 1 then one can say si: Cross(String, Integer) := (s,i); (x,y) := si; and x would have type String, y would have type Integer. See "courtesy conversioins" on http://www.aldor.org/docs/HTML/chap7.html#6 >> Whether you enclose >> >> 1,2,3 >> >> in braces or parentheses is only important if you write something like >> >> f (1,2,3) >> >> since >> >> f {1,2,3} >> >> does not work if f is a trivariate function and > > Why does it not work? What should we expect this to mean? The compiler issues a syntax error (if I remember correctly). > What about > > f ({1,2,3}) and f {(1,2,3)} The first is like the braces removed, the second is like the parens removed. Ralf 
From: Bill Page <bill.page@ne...>  20080226 15:14:19

On 2/26/08, Ralf Hemmecke wrote: > ... > >> %4 >> {1,2,3} > >> () @ AldorInteger, AldorInteger, AldorInteger > >> Comp: 0 msec, Interp: 10 msec > >> > > > > Again, doesn't this depend on the context in Aldor? > > Ehm, I think: no. > > Aldor allows the function "bracket" but not "brace". So, the > meaning of > > {1,2,3} > > is always the same. It is a multiple value. What is a "multiple value"? What is it's type? How is it different from an object of Cross? What can you do with such "multiple value" things? > Whether you enclose > > 1,2,3 > > in braces or parentheses is only important if you write something like > > f (1,2,3) > > since > > f {1,2,3} > > does not work if f is a trivariate function and Why does it not work? What should we expect this to mean? What about f ({1,2,3}) and f {(1,2,3)} What do these expressions mean in Aldor? > > f 1,2,3 > > is the same as > > (f 1), 2, 3 > > since function application has higher precedence. > Yes, that is clear. Regards, Bill Page. 
From: Bill Page <bill.page@ne...>  20080226 15:07:45

On 2/26/08, Ralf Hemmecke wrote: > ... > I am not so sure about Axiom, but in Aldor each type can > provide a function "bracket". The compiler then translates > > [x,y,z,t] > > into > > bracket(x,y,z,t). > Axiom has an operator called 'construct' that is called by the interpreter in the case of the '[ ... ]' syntax. > In particular List and Record provide such bracket function of type > > (in List(T)) > bracket: Tuple T > % > which allows the usual list construction. > > (in Record(a: Integer, b: String, c: Float)) > bracket: (Integer, String, Float) > % > which allows > > Arec: Record(a:Integer, b:String, c:Float) := [123,"azerty",1.2e3] > > What else would you want? > I think it is very useful to also have a similar operator called 'brace' in the case of the '{ ... }' syntax. This notation is very common in mathematics, e.g. in 'choose' and in the Christofel (tensor) symbols in geometry, etc. Regards, Bill Page. 
From: Ralf Hemmecke <ralf@he...>  20080226 15:06:30

>> I guess that this can be resolved by assigning a precedence >> to the brace, but I'd rather stay with Aldor... >> >> %1 >> #include "aldor" >> Comp: 70 msec, Interp: 10 msec >> %2 >> #include "aldorinterp" >> Comp: 30 msec, Interp: 0 msec >> %3 >> import from Integer >> Comp: 10 msec, Interp: 0 msec >> %4 >> {1,2,3} >> () @ AldorInteger, AldorInteger, AldorInteger >> Comp: 0 msec, Interp: 10 msec >> > > Again, doesn't this depend on the context in Aldor? Ehm, I think: no. Aldor allows the function "bracket" but not "brace". So, the meaning of {1,2,3} is always the same. It is a multiple value. Whether you enclose 1,2,3 in braces or parentheses is only important if you write something like f (1,2,3) since f {1,2,3} does not work if f is a trivariate function and f 1,2,3 is the same as (f 1), 2, 3 since function application has higher precedence. Ralf 
From: Bill Page <bill.page@ne...>  20080226 15:00:41

On 26 Feb 2008 06:26:50 0600, Gabriel Dos Reis wrote: > Ralf Hemmecke writes: > >  > In OpenAxiom1.2.0, you can use { } to construct sets directly. >  >  Gaby, >  >  I don't know whether you want to make SPAD syntax more similar >  to Aldor, > > > I'd, like as much as possible, to retain good aspects of Axiom as > originally by defined Jenks&Sutor while expanding it to solve > harder problems and taking advantages of recent advances in > system design and implementations. > +1 Hear, hear! I agree completely with Gaby about this. I do not think that it would be a good policy to deliberately make OpenAxiom look more like Aldor. Aldor exists, is (mostly) open source and has it's own development path (hopefully). OpenAxiom should be free to evolve in possibly new (and better) ways. Regards, Bill Page. 
From: Bill Page <bill.page@ne...>  20080226 14:57:11

On 26 Feb 2008 14:44:42 +0100, Martin Rubey wrote: > > 1) It could happen that the code inside the brace might be > computer generated. For that, it, is nicer to have "uniform" > semantics. > I think uniform semantics are *always* nicer. > 2) I find > > [{{x := f i; x+x^2+x^3}} for i in 1..10] > > as notation for a list of sets confusing. > > 3) What would {1,2,3} stand for: a (singleton) set of tuples or a set of > integers? What Gaby stated is that '{1,2,3}' is treated by the compiler (and the interpreter?) as a call to an operator called 'brace', i.e. brace(1,2,3) So whatever the operator 'brace' returns in this context is what '{1,2,3}' stands for. > I guess that this can be resolved by assigning a precedence > to the brace, but I'd rather stay with Aldor... > > %1 >> #include "aldor" > Comp: 70 msec, Interp: 10 msec > %2 >> #include "aldorinterp" > Comp: 30 msec, Interp: 0 msec > %3 >> import from Integer > Comp: 10 msec, Interp: 0 msec > %4 >> {1,2,3} > () @ AldorInteger, AldorInteger, AldorInteger > Comp: 0 msec, Interp: 10 msec > Again, doesn't this depend on the context in Aldor? Regards, Bill Page. 
From: Gabriel Dos Reis <gdr@cs...>  20080226 14:47:46

Martin Rubey <martin.rubey@...> writes:  Gabriel Dos Reis <gdr@...> writes:   >  Sure there is no semicolon, but I don't understand. (Unfortunately, I  >  can only speak of Aldor...). Cannot  >   >  {1}  >  > The point is that if the contained single expression is all you have,  > there is no point in putting in a brace. If you would like to group  > statements, then group statement*S*, and you'll be fine.   1) It could happen that the code inside the brace might be computer generated. A computer generated code has the luxury of introducing a temporary to hold the single expressions. And most computer generated codes are not meant for human consumption. I'll prefer to handle well the common cases, while making the harder cases possible.  For that, it, is nicer to have "uniform" semantics.   2) I find   [{{x := f i; x+x^2+x^3}} for i in 1..10]   as notation for a list of sets confusing.   3) What would {1,2,3} stand for: As documented in Jenks&Sutor, it stands fos a Set PositiveInteger with 3 elements.  Gaby 
From: Martin Rubey <martin.rubey@un...>  20080226 13:44:37

Gabriel Dos Reis <gdr@...> writes: >  Sure there is no semicolon, but I don't understand. (Unfortunately, I >  can only speak of Aldor...). Cannot >  >  {1} > > The point is that if the contained single expression is all you have, > there is no point in putting in a brace. If you would like to group > statements, then group statement*S*, and you'll be fine. 1) It could happen that the code inside the brace might be computer generated. For that, it, is nicer to have "uniform" semantics. 2) I find [{{x := f i; x+x^2+x^3}} for i in 1..10] as notation for a list of sets confusing. 3) What would {1,2,3} stand for: a (singleton) set of tuples or a set of integers? I guess that this can be resolved by assigning a precedence to the brace, but I'd rather stay with Aldor... %1 >> #include "aldor" Comp: 70 msec, Interp: 10 msec %2 >> #include "aldorinterp" Comp: 30 msec, Interp: 0 msec %3 >> import from Integer Comp: 10 msec, Interp: 0 msec %4 >> {1,2,3} () @ AldorInteger, AldorInteger, AldorInteger Comp: 0 msec, Interp: 10 msec Martin 