С учетом следующего кода:
let bar =
lazy(
printfn "bar"
())
let foo =
lazy(
printfn "foo"
bar)
В интерактивном окне (его сброс каждый раз),
Когда я звоню let res = foo.Force ()
, я получаю:
foo
val res : Lazy<unit> = Value is not created.
Когда я просто звоню foo.Force()
, я получаю:
foo
bar
val it : Lazy<unit> =
<ToString exception: Object reference not set to an instance of an object.>
{IsValueCreated = false;
Value = null;}
В обоих случаях я бы ожидал, что он просто напечатает "foo", однако во втором случае вы увидите "foo \ nbar" Что здесь происходит?