[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