[Aldor-l] question about set! in streams / shorter example

Martin Rubey martin.rubey at univie.ac.at
Thu Aug 24 14:18:57 EDT 2006


I have a much shorter example for my question now:
-------------------------------------------------------------------------------
#include "aldor"
#include "aldorio"


define GeneratingSeriesCategory: Category == with {
        coerce: Stream Integer -> %;    
        set!: (%, Integer, Integer) -> Integer;
}
GeneratingSeries: GeneratingSeriesCategory == add {
        Rep == Stream Integer;
        import from Integer, Rep, MachineInteger;
        coerce(s: Stream Integer): % == per s;

        set!(x: %, n: Integer, v: Integer): Integer == {
                stdout << "set! " << n << " " << v << newline;  
                set!(rep x, machine n, v);
        }
}
test(): () == {
        import from Integer, Stream Integer;
        g: GeneratingSeries := coerce stream(0$MachineInteger, 
                                             (n:MachineInteger):Integer +-> {
                                                     stdout << "gen " << n
                                                            << newline;  
                                                     n::Integer} );
        stdout << "Start" << newline;                                                    
        set!(g, 0, 1);
        stdout << "Middle" << newline;          
        set!(g, 0, 2);  
        stdout << "End" << newline;     
}
test();
-------------------------------------------------------------------------------

the output is:

Start
set! 0 1
gen 0
Middle
set! 0 2
End

and the question is:

WHY IS gen 0 APPEARING?

Please help!

Martin




More information about the Aldor-l mailing list