On 04/07/2008 01:55 PM, Martin Rubey wrote:
> Ralf Hemmecke <[EMAIL PROTECTED]> writes:
>
>>> | Note that at first I thought that introducing Aldor's extend would
>>> invalidate
>>> | my reasoning. But it turns out, that at least the current Aldor compiler
>>> does
>>> | *not* allow overriding domain definitions either. I could not find
>>> anything
>>> | appropriate in the Aldor User Guide though.
>> Martin, what exactly do/did you mean by that?
>
> [EMAIL PROTECTED]:~/aldor-test$ aldor -fx -laldor override.as
> [EMAIL PROTECTED]:~/aldor-test$ ./override
> foo()$Bar: foo$Bar
> bar()$Bar: foo$Bar + bar$Bar
> foo()$Foo: foo$Foo
> bar()$Foo: foo$Bar + bar$Bar
>
> Thus, bar$Foo calls foo()$Bar. The call to foo in Bar was *not* replaced by
> foo()$Foo.
Yes, that seems to be strange, but that is how Aldor is designed.
If you call bar$Foo then you take the implementation of bar in Bar since
that is what "Bar add {...}" for Foo says.
Well, bar$Bar behaves like bar$Bar.
Don't worry, there were times when I stepped into the same trap. ;-)
As for extend ... (as I understand it)
extend Foo: A == add {...}
is basically the same as
Foo': Join(Category-Of-Foo, A) == Foo add {...}
and then renaming Foo' to Foo (and thus hiding Foo). So one shouldn't
expect something different from the non-extend version.
Ralf
> #include "aldor"
> #include "aldorio"
>
> Bar: with {
> foo: () -> String;
> bar: () -> String;
> } == add {
> foo(): String == "foo$Bar";
> bar(): String == foo() + " + bar$Bar";
> }
>
> Foo: with {
> foo: () -> String;
> bar: () -> String;
> } == Bar add {
> foo(): String == "foo$Foo";
> }
>
> #if WithExtend
> extend Foo: with {
> } == add {
> foo(): String == "foo$Ext";
> }
> #endif
>
> stdout << "foo()$Bar: " << foo()$Bar << newline;
> stdout << "bar()$Bar: " << bar()$Bar << newline;
> stdout << "foo()$Foo: " << foo()$Foo << newline;
> stdout << "bar()$Foo: " << bar()$Foo << newline;
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Register now and save $200. Hurry, offer ends at 11:59 p.m.,
Monday, April 7! Use priority code J8TLD2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
open-axiom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel