package vitry.runtime.launch; import static java.lang.System.out; import vitry.runtime.struct.AbstractSeq; import vitry.runtime.struct.MemoizedSeq; import vitry.runtime.struct.Seq; import vitry.runtime.struct.Seqs; public class Memoize { static final class Foo extends AbstractSeq { public Object head() { return Math.round(Math.random() * 100.); } public Seq tail() { return new Foo(); } } public static void main(String[] args) { Seq<Integer> s = new MemoizedSeq(new Foo()); out.println(Seqs.first(s)); out.println(Seqs.second(s)); out.println(Seqs.third(s)); out.println(Seqs.first(s)); out.println(Seqs.second(s)); out.println(Seqs.third(s)); out.println(Seqs.first(s)); out.println(Seqs.second(s)); out.println(Seqs.third(s)); } }