[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of
From: |
Martin Rubey |
Subject: |
Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work |
Date: |
08 Aug 2007 13:36:52 +0200 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.4 |
Maybe you could try to compile the same thing with libaxiom?
Martin
Ralf Hemmecke <address@hidden> writes:
> I think you have just found a bug in the Axiom interpreter/compiler.
>
> The following Aldor program compiles fine.
>
> aldor -fx -laldor aaa.as
>
> and gives as output
>
> xs = [
> [0, 0]
> [0, 0]
> [10, 0]
> ]
>
> ys = [
> [0, 0]
> [0, 0]
> [10, 0]
> ]
>
> Don't be distracted by this output stuff (TextWriter). Your code basically
> appears in the main() function. And in Aldor that works.
>
> Since this special form of assignment is actually a call to the function set!
> (Aldor) the line
>
> ys(2).k := 10;
>
> is equivalent to
>
> set!(ys(2), k, 10);
>
> There is no problem with the actual form of the first argument of set!. As
> long
> as there is a function
>
> set!: (R, Enumeration(k: Type), INT) -> INT
>
> that should compile fine. Well, and "ys(2)" is of type R.
> (Of course, all this is Aldor specific, but Axiom should try hard to get
> close.)
>
> I have no idea, though, why Axiom is unable to deal correctly with that
> expression. That should be dealt with by our compiler experts.
>
> Ralf
>
>
>
>
> ---BEGIN aaa.as
> #include "aldor"
> #include "aldorio"
>
> INT == MachineInteger;
> R ==> Record(k: INT, rad: INT);
> import from R, INT;
>
> initrec(): R == [0,0];
>
> (tw: TextWriter) <= (r: R): TextWriter == {
> tw << "[" << r.k << ", " << r.rad << "]"
> }
> (tw: TextWriter) << (g: Generator R): TextWriter == {
> tw << "[" << newline;
> for r in g repeat tw << " " <= r << newline;
> tw << "]" << newline;
> }
>
>
> main(): () == {
> xs: List R := [initrec() for i in 1..3];
> ys: Array R := [z for z in xs];
> ys(2).k := 10;
> stdout << "xs = " << generator xs << newline;
> stdout << "ys = " << generator ys << newline;
> }
>
> main();---END aaa.as
>
> On 08/08/2007 11:41 AM, Bill Wood wrote:
> > I'm just trying to assign to a field of a record in a one-dimensional
> > array of records, but I get this incomprehensible message:
> > =====================================================================
> > (1) -> )clear all
> > All user variables and function definitions have been cleared.
> > (1) -> )read foo.input
> > -- File of Axiom definitions solving problem 124.
> > -- Created 2007/08/08 by Bill Wood.
> > init_rec() ==
> > r : Record(k: INT, rad: INT) := [0,0]
> > r
> > Type: Void
> > (2) -> xs := [init_rec() for i in 1..3]
> > Compiling function initrec with type () -> Record(k: Integer,rad:
> > Integer)
> > (2) [[k= 0,rad= 0],[k= 0,rad= 0],[k= 0,rad= 0]]
> > Type: List Record(k: Integer,rad: Integer)
> > (3) -> ys := oneDimensionalArray(xs)
> > (3) ->
> > (3) [[k= 0,rad= 0],[k= 0,rad= 0],[k= 0,rad= 0]]
> > Type: OneDimensionalArray Record(k: Integer,rad: Integer)
> > (4) -> ys
> > (4) ->
> > (4) [[k= 0,rad= 0],[k= 0,rad= 0],[k= 0,rad= 0]]
> > Type: OneDimensionalArray Record(k: Integer,rad: Integer)
> > (5) -> ys(2).k := 10
> > 5) ->
> > The form on the left hand side of an assignment must be a single
> > variable, a Tuple of variables or a reference to an entry in an
> > object supporting the setelt operation.
> > (5) ->
> > =======================================================================
> > What do I have to do to set the fields of the records to desired
> > values???
> > -- Bill Wood
>
>
> _______________________________________________
> Axiom-developer mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/axiom-developer
- [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work, Ralf Hemmecke, 2007/08/08
- Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work,
Martin Rubey <=
- Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work, Ralf Hemmecke, 2007/08/08
- Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work, Ralf Hemmecke, 2007/08/08
- Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work, Bill Page, 2007/08/08
- Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work, Ralf Hemmecke, 2007/08/08
- Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work, Bill Page, 2007/08/08
- Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work, Martin Rubey, 2007/08/08
- Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work, Bill Page, 2007/08/08
Re: [Axiom-developer] Re: [Axiom-mail] Assigning to Element of Array of Records Doesn't Seem to Work, Martin Rubey, 2007/08/08