static S clUnparse(Lisp l) { if (l == null) ret ""; ret join(" ", (L) concatLists(ll(conceptQuote(l.head)), map(f clUnparse_sub, l))); } static S clUnparse_sub(Lisp l) { ret l.empty() ? clUnparse(l) : "(" + clUnparse(l) + ")"; } static L clUnparse(L l) { ret map(f clUnparse, l); }