У меня основная CL-лаборатория - SBCL и на нём же у меня работает
Maxima. Стоит quicklisp и без напильника просто так всё не работает:
While evaluating the form starting at line 130, column 0
of #P"/home/redarch19/quicklisp/setup.lisp":
debugger invoked on a SB-INT:SIMPLE-FILE-ERROR in thread
#:
Can't create directory /home/juergen/
Что за juergen и откуда его ноги я не знаю. Конфигурирую в
~/.maxima/maximarc:
MAXIMA_LISP=sbcl
MAXIMA_LISP_OPTIONS=" --no-userinit --no-sysinit"
Также приходится править /usr/bin/maxima - передвинуть
$MAXIMA_LISP_OPTIONS за --end-runtime-options. Может быть я делаю
что-то не так, но тем не менее maxima запускается. Я могу запускать
swank:
to_lisp();
(require 'asdf)
(progn
(flet ((%gpath (p)
(push (merge-pathnames p
*default-pathname-defaults*)
asdf:*central-registry*)))
(let ((*default-pathname-defaults*
#P"/usr/share/sbcl-source/contrib/"))
(map nil #'%gpath
'(#P"sb-cltl2/"
#P"sb-introspect/")))
(let ((*default-pathname-defaults* (user-homedir-pathname)))
(%gpath #P".emacs.d/site-lisp/slime/")
(asdf:initialize-output-translations
`(:output-translations
(t ,(merge-pathnames (format nil ".cache/common-lisp/~A/"
(asdf:implementation-identifier))))
:ignore-inherited-configuration))))
(asdf:oos 'asdf:load-op :swank))
(swank:create-server :dont-close nil
:port 23146)
(to-maxima)
Могу загрузить quicklisp. Однако лисп беспорядочно сваливает кеш в
директории - т.е. не рассовывает по директориям. Однажды загрузившись
системы лисп не может их найти если они нужны для загрузки других
систем, не грузятся системы в local-projects. Также не грузятся плюшки
для sbcl из contrib. Как это всё починить?
http://filonenko-mikhail.blogspot.ru/2011/10/common-lisp-restas-maxima-3.html
https://www.google.ru/#newwindow=1&q=maxima+asvil+филоненко
Ещё у него был аккаунт на ЛОРе
Требуется запустить maxima и догрузить туда common lisp библиотеки?
Если так, то без дополнительных патчей не обойтись. Сам проект maxima стремится быть самодостаточным, поэтому при запуске он настраивает окружение под себя. quicklisp с этим конфликтует. Это я несколько грубо говорю.
Я когда-то давно подружил, а точнее я запатчил maxima так, чтобы она могла загружать как ещё одна библиотека quicklisp-a. Но это фича оказалась невостребованной.
Если ты форкнул максиму - значит, наверно, пытался внести патчи, но их не приняли?
Неужели там не понимают, что СПО-лисперов мало и было бы значительно лучше
обмениваться реализованными алгоритмами со свободным CL сообществом?
В чём преимущества такого самодостаточного развития?
Может в ядре разработки максимы засели саботажники от конкурентов (Maple, Mathematica)?
> Неужели там не понимают
LOL. Чем меньше сообщество, тем круче Эго и жирнее тараканы. Особенно если речь идёт о "старых лисперах".
Да уж. Тут надо учитывать ещё почётный возраст этого сообщества.
Да, я приходил к ним в мейллист с патчем и говорил о некотором его преимуществе, а именно я указывал на возможность построения серверного многопоточного решения. Это позволило бы сделать довольно неплохой веб сервис и тем самым притянуть внимание к проекту хотя бы со стороны школьников, которым лень делать домашнее задание. Со стороны учителей можно сделать мини проект по автогенерированию заданий/задач с автопроверкой результата. Патч не произвел впечатление, поэтому я пошёл в common lisp сообщество, и там меня выслушали, но активных сторонников и пользователей не нашлось.
В ядре разработки максимы находятся некоторые люди и это не конкуренты.
Стефан Вольфрам (его так зовут?) рассматривал лисп как язык для построения "математики" и у него тогда в конкурентах ходила та самая macsyma (предок). Но Роб Пайк его убедил в перспективности Си а сам Стефан видел при этом, что Лисп тормозит. http://blog.stephenwolfram.com/2013/06/there-was-a-time-before-mathematica/
Какой-то человек хотел на заре времен переубедить Стефана, что лисп нормальный, но видимо не сумел. https://groups.google.com/forum/#!original/comp.lang.lisp/BUxXH76CYdc/IunywkAxufMJ
Xach меня спросил готов ли я поддерживать форкнутую версию maxima и я (не помню точно) либо не ответил, либо отказался.
Тогда вот спрошу ещё как у возможно знающего человка.
Вот я хочу написать маленькую библиотечку для работы с алгебраическими
выражениями. Смотрю как такие выражения представляются в максиме:
(($MATRIX SIMP)
((MLIST SIMP) ((RAT SIMP) -1 2)
((MTIMES SIMP) ((RAT SIMP) 1 2) ((MEXPT SIMP) 3 ((RAT SIMP) 1 2))) 0)
((MLIST SIMP)
((MTIMES SIMP) ((RAT SIMP) 1 2) ((MEXPT SIMP) 3 ((RAT SIMP) 1 2)))
((RAT SIMP) 1 2) 0)
((MLIST SIMP) 0 0 1))Для меня эти кажутся ненормальными и лучше было бы сделать в виде
структур с типами как у первых элементов в списках. Преимущества я вижу
в удобстве с destructuring-bind и не нужно навешивать методы для наглядного
отображения содержимого с объектом (для pprint вроде). Может были какие-то
веские причины так делать?
Может где ещё есть свободный CL-код, работающий с такими выражениями
кроме форков максим и аксиом?
Не знаю, может быть да, для деструктуриазации, может быть для того, чтобы сразу скармливать "компилятору" и получать конечное выражение.
Такого cl кода больше нет. Но если я правильно понимаю исходники максимы не так уж друг от друга зависят. Главные то данные для общения это всего лишь правильно оформленный список.