2010-10-03 4 views
1

Je suis relativement nouveau à Lisp (je connais juste les bases) et j'essaie actuellement de lancer un programme de composition algorithmique créé par David Cope. Il fonctionne dans MCL 5.0, et je continue à obtenir l'erreur suivante:Augmenter la taille minimum de débordement de pile dans Mac Common Lisp 5.0

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

Quelqu'un sait quelle fonction j'utiliser pour augmenter la taille de débordement de pile et comment je calculer la meilleure taille de débordement de pile pour mon ordinateur? Je cours MCL sur un vieux Powerbook avec 512 Mo de RAM.

Merci pour votre temps,

Eddie

Répondre

0

Il semble dire que vous avez simplement besoin de modifier la *minimum-stack-overflow-size* variable spéciale. Lorsque vous êtes à la REPL (CL-USER> rapide ou similaire), inspectez cette variable en évaluant son nom:

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

Ensuite, réglez-le sur une valeur plus grande (la 1234567 est juste un espace réservé) avec setf:

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

Cependant, cela peut ne pas être le vrai problème. Je ne connais pas bien le langage MCL, mais il peut être nécessaire de (declaim (optimize (speed 3) (safety 0))) ou similaire pour permettre l'élimination d'appel de fin, si le programme que vous voulez exécuter utilise une fonction récursive de queue qui dépend d'une telle optimisation.

1

À l'origine, les options de mémoire ont été modifiées avec ResEdit.

Vous pouvez également utiliser la fonction SAVE-APPLICATION et utiliser le mot-clé: MEMORY-OPTIONS pour spécifier différentes valeurs. Ceci est décrit dans le manuel de référence MCL. Cette fonction enregistre une nouvelle application MCL. Généralement, on démarre vanilla MCL, définit diverses options, charge certaines bibliothèques et enregistre ensuite une nouvelle application. Cette nouvelle application est ensuite utilisée lors du développement.

La taille de pile nécessaire dépend du programme que vous souhaitez exécuter.

Si un dépassement de pile se produit, dans MCL, vous pouvez continuer avec une pile plus grande dans de nombreux cas. Choisissez simplement la bonne option de redémarrage.