clj-java-decompiler 显示函数x大致如下
public static Object invokeStatic() {
while (true) {}
}
函数y大致如下
public static final Var const__0;
public static Object invokeStatic() {
return ((IFn)const__0.getRawRoot()).invoke();
}
这正是recur
的目的,即优化尾部递归调用。y
最终会在某个点耗尽栈空间。所以,是的,recur
不能动态地重新绑定。