Переменные и переменные Ref с точки зрения захвата

Мое поверхностное понимание переменных в F# предполагает, что объявление переменной как 'изменяемой' и использование переменной 'ref', по сути, делают одно и то же. Оба они являются разными способами решения одной и той же основной проблемы - ограниченного и структурированного допуска изменчивости в функциональном языке без необходимости прибегать к монаде IO. То, что есть технические отличия, было "абстрагировано" от моего понимания.

  1. Если это так, почему замыкания не могут захватывать изменяемые переменные, но они могут захватывать ref-экземпляры?
  2. В более общем смысле, чем технически отличаются эти две формы, которые допускают эту разницу?
  3. Какова цель с точки зрения языкового дизайна - ввести два ярлыка изменчивости, а не один?

Извините, если это мульти-партер, но все они кажутся связанными.

1 ответ

Решение

Увидеть

http://lorgonblog.wordpress.com/2008/11/12/on-lambdas-capture-and-mutability/

особенно раздел "комментарии о дизайне языка" (я бы процитировал его здесь, но он не очень хорош, вам нужна вся запись в блоге для контекста).

Другие вопросы по тегам