void toS(SExpression s) { if (s.isAtom() && !s.printValue.equals("")) { sb.append(s.printValue); return; } sb.append('('); while (!s.isAtom()) { toS(s.car); s = s.cdr; if (!s.isAtom()) { sb.append(' '); } } sb.append(')'); }
public SExpression length() { long l = 0; SExpression s = this; while (!s.isAtom()) { l++; s = s.cdr(); } return new SExpression(BigInteger.valueOf(l)); }
public SExpression cons(SExpression t) { if (t.isAtom() && t != Atom.NIL) { return this; } return new SExpression(this, t); }