2010-10-03 2 views
1

Я относительно новичок в Lisp (я просто знаю самые основы), и сейчас я пытаюсь запустить алгоритмическую композиционную программу, созданную Дэвидом Коупом. Она работает в MCL 5.0, и я получаю следующее сообщение об ошибке:Увеличение минимального размера переполнения стека в Mac Common Lisp 5.0

Error in process play: Stack overflow on value stack. To globally increase stack space, increase *minimum-stack-overflow-size*

Кто-нибудь знает, какие функции я хотел бы использовать, чтобы увеличить размер переполнения стека и как я бы вычислить лучший стека размер переполнения для моего компьютера? Я запускаю MCL на старом Powerbook с 512 МБ ОЗУ.

Спасибо за ваше время,

Эдди

ответ

0

кажется, что вам просто нужно изменить специальную переменную *minimum-stack-overflow-size*. Когда вы находитесь в РЕПЛ (CL-USER> подсказка или аналогичный), проверить эту переменную, оценивая свое название:

CL-USER> *minimum-stack-overflow-size* 

Затем установите его в большее значение (1234567 просто заполнитель) с setf:

CL-USER> (setf *minimum-stack-overflow-size* 1234567) 

Однако это может быть не проблема. Я не знаю MCL хорошо, но может потребоваться (declaim (optimize (speed 3) (safety 0))) или аналогично устранению устранения хвостового вызова, если программа, которую вы хотите запустить, использует хвостовую рекурсивную функцию, которая зависит от такой оптимизации.

1

Первоначально параметры памяти были отредактированы с помощью ResEdit.

Можно также использовать функцию SAVE-APPLICATION и использовать ключевое слово: MEMORY-OPTIONS, чтобы указать различные значения. Это описано в справочном руководстве MCL. Эта функция сохраняет новое приложение MCL. Обычно запускается vanilla MCL, задается множество опций, загружается несколько библиотек, а затем сохраняется новое приложение. Это новое приложение затем используется во время разработки.

Необходимый размер стека зависит от программы, которую вы хотите запустить.

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

Смежные вопросы