procedure main(A) \A := ["cat","hat",7] x := history() every x.set(!A) write("x current value is: ",x.val()) write("Number of saved values is: ",x.size()) writes("3 most recent x values from newest to oldest: ") every writes(" ",x.gen()\3) write() while write("x value was: ",\x.get()) write("Number of saved values is now: ",x.size()) end class history(x) method size(); return *x; end method val(); return x[-1]; end method set(v); put(x,v); end method get(); return pull(x); end method gen(); suspend x[*x to 1 by -1]; end initially x := [] end