Expression fn=analyse(first);
if (KissUtils.isMacro(fn)) {
// TODO: macro expend with expansion passing?
IFn macroFn=(IFn) fn.eval(Environment.EMPTY);
Object expandedForm=macroFn.applyTo(RT.cons(form,RT.cons(PersistentHashMap.EMPTY, form.next())));
return analyse(expandedForm);
}
ISeq paramSeq=RT.next(form);
int paramCount=RT.count(paramSeq);