On 05/13/2008 05:26 PM, Bill Page wrote:
> On Tue, May 13, 2008 at 11:04 AM, Ralf Hemmecke <[EMAIL PROTECTED]> wrote:
>> ...
>> Ooops, what in
>>
>> )abbrev domain AAA Aaa
>> Aaa: with
>> bar: Integer -> Integer
>> == add
>> (x: Integer := 4; y: Integer := 3)
>> bar(a: Integer): Integer == x + a + z
>> z: Integer := 3 + y
>>
>> would be illegal?
>
> As I understand it under Gaby's change to OpenAxiom this would be (and
> is) illegal.
>
>> I just had to replace (as I said) the braces by parentheses,
>> since parens are used to group sequences of commands.
>> (Same as braces in Aldor.)
>
> Do you think grouping sequences of commands by parens is entirely
> equivalent to code indentation?
No, I don't think so. But the code from the AUG is exactly like the
above. In Aldor braces are used for grouping a sequence of commands. (In
fact, Aldor allows to use parenthesis as in Axiom, but I did not really
have the need to use parens instead of braces.)
So, I think the proper translation of the AUG Aldor code chunk into
Axiom is just replacing braces by parentheses.
That I could not write
z: Integer == 3 + y
("==" instead of ":=") was somehow a surprise to me, but I don't know
SPAD so well. So my question would be, how to use a delayed assignment
so that whenever I later call "bar(100)", z would be properly defined?
>> The above code does indeed not compile (at least not in fricas).
>> Why?
> Obviously because z is not "known" to the compiler when compiling
> 'bar'. It is nowhere is scope and has not been given any declaration
> locally. Right? What else would you expect?
> http://axiom-wiki.newsynthesis.org/SandBoxLexicalScope#bottom
Good question. Let's ask the compiler experts what the value of x should
be in the following piece of code.
z: Integer := 0
foo(n: Integer): Integer == n + z
z := 1
x := foo(0)
Ralf
-----------------------------------------------------------------------
For your convinience...
)abbrev domain AAA Aaa
Aaa: with
foo: Integer -> Integer
== add
z: Integer := 0
foo(n: Integer): Integer == n + z
z := 1
So why would I need "z: Integer := 0"?
-------------------------------------------------------------------------
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/
_______________________________________________
open-axiom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel