static O generalLispEval(Lisp l) { if (l == null) null; if (l.size() == 1 && lispTrue("hkihrqgdlkdayxzn", l.head)) ret generalLispEval(l.get(0)); S evaluator = first(followForwardRelation_raw("mssmzemxxztdpphw", l.head)); if (evaluator != null) ret conceptCall(evaluator, map(f generalLispEval, l)); S sf = first(followForwardRelation_raw("olphazqzxxnvtjcx", l.head)); if (sf != null) ret makeAndCall_cached(sf, asObjectArray(map(f generalLispEval, l))); if (l.isLeaf()) { for (Lisp rule : lispTruth2("yrxfddfomyzlqwri")) if (isTrue(callConcept(rule.raw(0), l.head))) ret callConcept(rule.get(1), l.head); for (Lisp rule : lispTruth2("wwaprwlmqzqeaikp")) if (isTrue(makeAndCall_cached(rule.raw(0), l.head))) ret makeAndCall_cached(rule.raw(1), l.head); } fail("Can't evaluate " + l); }