clj-java-decompiler shows basically this for function x:
public static Object invokeStatic() {
while (true) {}
}
and this for y
public static final Var const__0;
public static Object invokeStatic() {
return ((IFn)const__0.getRawRoot()).invoke();
}
That is the purpose of recur
, to optimize self tail calls. y
will run out of stack space at some point. So yes, a recur
cannot be dynamically rebound.