public final class Cons {
/** extensive javadoc omitted for brevity... */
private Object car;
private Object cdr;
public Object getFirstElementOfList() { return car; }
public Object getTailOfList() { return cdr; }
public void setFirstElementOfListBang...
ConsGetter cadr = ConsGetterFactory.makeConsGetterFromXMLString("<!DOCTYPE consgetter PUBLIC \"-//LISP//DTD CONSGETTER 1.0\" \"http://www.lisp.org/lisp/lisp/DTD/consgetter.dtd\">" +
"<consgetter> <elementgetter> <element>cdr</element> <!-- get rest of elements --> </elementgetter> <elementgetter> <element>car</element> <!-- get first element --> </elementgetter> </consgetter>");
public List(Object head) {
this.head = new Node(head);
}
public Object car() {
if (head == null)
throw new IllegalStateException();
else
return head;
}
public List cdr() {
Node newHead = new Node(this.head);
Node prev, next, newPrev, newNext;
for ( prev = this.head, next = this.head.next;
next != null;
prev = prev.next, next = next.next) {
newPrev = new Node(prev.object);
newNext = new Node(next.object);
newPrev.next = newNext;
}
return new List(newHead);
}