Существуют ли языки программирования, в которых продолжения восстанавливают кучу в дополнение к стеку? - PullRequest
1 голос
/ 19 марта 2011

Языки, с которыми я знаком с поддержкой продолжений (Scheme и Ruby), восстанавливают состояние стека и указатель инструкций с момента создания продолжения.Мне интересно, есть ли какие-нибудь языки программирования, в которых вызов продолжения также восстанавливает кучу?

[РЕД.См. Статью Нефтеперерабатывающие магазины первого класса Грега Моррисетта.

1 Ответ

2 голосов
/ 19 марта 2011

Поскольку все объекты неизменяемы в Haskell, я думаю, можно с уверенностью сказать, что продолжение восстановит все состояние процесса, включая кучу.

Было бы интересно выяснить, как это влияет на ввод / вывод и другое монадическое поведение. Я рискну предположить, что система типов не разрешит возврат обратно в состояние до того, как произошло событие ввода-вывода. (Продолжение само по себе является монадой, поэтому вы, вероятно, не можете чередовать его с I / O.)

Предостережение: я почти не знаю Haskell, поэтому приведенные выше комментарии могут быть смехотворной кучей глупостей.

...