LINUX.ORG.RU

Не работает Maxima


0

0

Здравствуйте. Решил вот поставить себе максиму. Скачал, распаковал, собралось всё без проблем. Запускаю. И нифига не работает, выдаёт лисповую ошибку. Ну, думаю, какой-нить левый лисп. Собираю с другим лиспом (сначала был gcl, теперь cmucl), та же фигня, какой-то type-error. Собрал и с clisp, пробовал предыдущие версии максимы, другие версии интерпретаторов - нифига не работает. В гугле ничего толкового не нашёл, сам понять не в силах, в общем совсем уж отчаялся.. А поковырять-то её хочется. Подскажите, что делать.

Ошибка следующая - в cmucl:

Type-error in KERNEL::INVALID-ARRAY-INDEX-ERROR-HANDLER:
0 is not of type (INTEGER 0 (0))

в clisp: AREF: index 0 for "" is out of range

то есть в принципе одно и то же. Я так понимаю какой-то косяк в исходниках самой максимы, где-то не так объявлен массив или что-нибудь такое, но там 109 МБ кода, в лиспе я как баран в опельсинах, в общем надеюсь на вашу помощь :)

★★★★★

maxima-5.9.2
./configure --prefix=/usr --enable-gcl
gcl-2.6.7
./configure --prefix=/usr \
--enable-tkconfig=/usr/lib \
--enable-tclconfig=/usr/lib \
--enable-infodir=/usr/info \
--enable-ansi \
--enable-emacsdir=/usr/share/emacs/site-lisp

Всё работает.

geekkoo
()
Ответ на: комментарий от kondor

Да тут дело в том, что у меня гента.. =)) Так что приходится собирать всё из исходников. Разве что можно слаковский tgz взять посмотреть.

Laz ★★★★★
() автор топика
Ответ на: комментарий от geekkoo

О, спасибо!! Эта версия собралась и заработала :)) Правда всё-таки хотелось бы разобраться, что в 5.10 не так (или что у меня не так =))

Laz ★★★★★
() автор топика

Размышления, пояснения....

Описание типа (integer 0 (0)) означает целый тип, включающий все числа равные и больше нуля (lower inclusive bound) и меньше нуля (upper exclusive bound). http://www.lisp.org/HyperSpec/Body/sec_12-1-6.html http://www.lisp.org/HyperSpec/Body/syscla_integer.html

Из этого условия следует, что множество целых чисел с такими требованиями является пустым и ни одно целое число N, включая 0, не будет (typep N '(integer 0 (0))), что правильно выдает SBCL и другие нормальные компиляторы.

Судя по всему где-то в коде неправильно задана верхняя граница массива.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.