I remember it was said that the below is valid code: interface FactInt { int invoke(int i); } FactInt factorial = i -> { return i == 0 ? 1 : i * factorial.invoke(i - 1); }; But the compile (b61) says: error: variable factorial might not have been initialized How can I write recursive expression like this ? Thanks Boaz