Vu le code suivant:F #: Oddity avec évalution paresseux
let bar =
lazy(
printfn "bar"
())
let foo =
lazy(
printfn "foo"
bar)
Dans la fenêtre interactive (remise à zéro chaque fois),
Quand j'appelle let res = foo.Force()
je reçois:
foo
val res : Lazy<unit> = Value is not created.
Quand j'appelle simplement foo.Force()
, j'obtiens:
foo
bar
val it : Lazy<unit> =
<ToString exception: Object reference not set to an instance of an object.>
{IsValueCreated = false;
Value = null;}
Dans les deux cas, je m'attendais à juste imprimer "foo", mais le deuxième cas imprime "foo \ nbar". Que se passe t-il ici?
Cela pourrait être, je pense que mon VS2010 beta2 est assez vieux: 10.0.21003.1. Est-ce que quelqu'un d'autre reproches ce problème? Sinon, je suppose que c'est un problème connu avec les versions précédentes – rysama
Ouais, je n'ai pas Beta2 à portée de main, mais ma construction interne au travail a le comportement attendu, donc cela semble avoir été un bug qui a été corrigé, Je ne sais pas si le correctif l'avait déjà fait dans une version ou non. – Brian
Merci de vérifier – rysama