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