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