, La clase de caso Scala prohíbe los parámetros de llamada por nombre?

Quiero implementar una lista infinita:

abstract class MyList[+T]
case object MyNil extends MyList[Nothing]
case class MyNode[T](h:T,t: => MyList[T]) extends MyList[T]

//error: `val' parameters may not be call-by-name

el problema es elcall-by-name No se permite.

He escuchado que es porqueval ovar el parámetro constructor no está permitido paracall-by-name. Por ejemplo:

class A(val x: =>Int) 
//error: `val' parameters may not be call-by-name

Pero la contradicción es que el parámetro del constructor normal sigue siendoval, A pesar deprivate. Por ejemplo:

class A(x: =>Int) 
// pass

Entonces la pregunta:

¿El problema es realmente sobreval ovar ?Si eso. Dado que el punto de llamar por nombre es diferir el cálculo, ¿por qué no podríaval ovar se aplazará el cálculo (o inicialización)?¿Cómo sortear la clase cass para implementar una lista infinita?

Respuestas a la pregunta(2)

Su respuesta a la pregunta