Переменные и переменные Ref с точки зрения захвата - PullRequest
7 голосов
/ 19 октября 2010

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

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

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

1 Ответ

6 голосов
/ 19 октября 2010

См.

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

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

...