O Scala mapValues é preguiçoso?
Quando eu ligo
System.err.println("Before")
System.err.flush()
val foo: Map[Int, T] = t mapValues (fn(_))
System.err.println(foo.head) //prevent optimiser from delaying the construction of 'foo'
System.err.println("After")
System.err.flush()
comfn
tendo uma instrução de depuração dentro, recebo esta saída:
Before
...head item...
After
...debug print statement from fn...
...debug print statement from fn...
Não entendo por que as instruções debug print estão sendo chamadas após a impressão de "Depois" e não entendo por que estou recebendo duas vezes - a menos quemapValues
cria um mapa preguiçoso?