static bool lispEqic(Lisp a, Lisp b) { if (a == null) ret b == null; if (neqic(a.head, b.head)) false; int n = l(a.args); if (n != l(b.args)) false; for i to n: if (!lispEqic(a.args.get(i), b.args.get(i))) false; true; } static bool lispEqic(Lisp a, S b) { if (a == null) ret b == null; ret nempty(a.args) && eqic(a.head, b); }