Документация Lazy.lazy_from_val
утверждает, что эта функция предназначена для особых случаев:
val lazy_from_val : 'a -> 'a t
lazy_from_val v returns an already-forced suspension of v This is for special purposes only and should not be confused with lazy (v).
О каких случаях идет речь?
Если я создам пару приостановленных вычислений из такого значения, как:
let l1 = lazy 123
let l2 = Lazy.lazy_from_val 123
В чем разница между этими двумя? Поскольку Lazy.lazy_is_val l1
и Lazy.lazy_is_val l2
оба возвращают true, говоря, что значение уже принудительно!