¿Por qué es posible asignar lambdas recursivas a vals no perezosos en Scala?

En la siguiente declaración el valf se define como una lambda que se hace referencia a sí misma (es recursiva):

val f: Int => Int = (a: Int) =>
    if (a > 10) 3 else f(a + 1) + 1 // just some simple function

Lo he intentado en REPL, y se compila y ejecuta correctamente.

Según la especificación, esto parece una instancia de referencia directa ilegal:

En una secuencia de afirmacións[1]...s[n] formando un bloque, si un nombre simple ens[i] se refiere a una entidad definida pors[j] dóndej >= i, entonces para todoss[k] entre e incluyendos[i] ys[j],

s[k] No puede ser una definición variable.Sis[k] es una definición de valor, debe serlazy.

La asignación es una sola declaración, por lo que satisfizo elj >= i criterios, y se incluye en el intervalo de declaraciones a las que se aplican las dos reglas (entre e incluyendos[i] ys[j])

Sin embargo, parece que viola la segunda regla, porquef No es vago.

¿Cómo es eso una declaración legal (lo probé en Scala 2.9.2)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta