Изменяемые переменные vs Ref с точки зрения захвата
-
09-10-2019 - |
Вопрос
Мое поверхностное понимание переменных в f # предполагает, что объявление переменной "изменяемой" и использование переменной "ref", по сути, делают одно и то же.Это оба разных способа решения одной и той же основной проблемы - ограниченного и структурированного учета изменчивости на функциональном языке без необходимости прибегать к монаде ввода-вывода.То, что существует техническая разница, было "абстрагировано", насколько я понимаю.
- Если это так, то почему замыкания не могут захватывать изменяемые переменные, но они могут захватывать экземпляры ref?
- В более общем плане, в чем заключается техническое различие между двумя формами, которое допускает такое различие?
- Какова цель с точки зрения языкового дизайна введения двух ярлыков изменчивости, а не только одного?
Мне жаль, если это многоаспектный рассказ, но все они кажутся связанными.
Решение
Видишь
http://lorgonblog.wordpress.com/2008/11/12/on-lambdas-capture-and-mutability/
особенно раздел "комментарии к языковому дизайну" (я бы процитировал его здесь, но он не стоит особняком, вам нужна вся запись в блоге для контекста).