Когда в OCaml вступает в действие смягченное ограничение ценностей?
Может ли кто-то дать краткое описание того, когда наступит ослабленное ограничение стоимости? Мне было трудно найти краткое и четкое описание правил. Есть бумага Гаррига:
http://caml.inria.fr/pub/papers/garrigue-value_restriction-fiwflp04.pdf
но это немного плотно Кто-нибудь знает более содержательный источник?
Приложение
Некоторые хорошие объяснения были добавлены ниже, но я не смог найти там объяснения для следующего поведения:
# let _x = 3 in (fun () -> ref None);;
- : unit -> 'a option ref = <fun>
# let _x = ref 3 in (fun () -> ref None);;
- : unit -> '_a option ref = <fun>
Кто-нибудь может уточнить выше? Почему ошибочное определение ссылки в пределах RHS вмещающей let влияет на эвристику.