I am reading a Scala textbook regarding Streams
sealed trait Stream[+A]
case object Empty extends Stream[Nothing]
case class Cons[+A](h: () => A, t: () => Stream[A]) extends Stream[A]
The textbook reads
"Due to technical limitations, these are thunks that must be explicitly forced, rather than by-name parameters. "
I suppose the textbook means that h: ()=>A, t: ()=>Stream[A]
should not be replaced with h: =>A, t: =>Stream[A]
. But what are the so-called "technical limitations" that prohibit this?