An iterative version of append can copy the first list in a loop, using O(1) stack space. For this function, it is convenient to use the setrest function:
public static Cons append (Cons x, Cons y) { Cons front = null; Cons back = null; Cons cell; if ( x == null ) return y; for ( ; x != null ; x = rest(x) ) { cell = cons(first(x), null); if ( front == null ) front = cell; else setrest(back, cell); back = cell; } setrest(back, y); return front; }
Contents    Page-10    Prev    Next    Page+10    Index