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
不能动态重新绑定。