Esecuzione:Scala flusso confusione
lazy val s: Stream[Int] = 1 #:: 2 #:: {val x = s.tail.map(_+1); println("> " + x.head); x}
s.take(5).toList
mi aspetto:
> List(2, 3)
> List(2, 3, 4)
List(1, 2, 3, 4, 5)
e ottengo:
> 3
List(1, 2, 3, 4, 5)
Potrebbe spiegare a me?
Perché dovresti aspettarti che 'x.head' restituisca una lista? – sepp2k
Ciò che mi confonde è il motivo per cui vorresti inserire un 'println' nella definizione di un valore pigro. –
@Dan: Immagino quando e quanto spesso verrà eseguita l'espressione (e quali saranno i vari valori quando lo farà). – sepp2k