Лор, вопрос такой: как использовать Maxima как библиотеку?
на платформе Windows.
Что я нашёл по этому вопросу:
Очень много написано тут http://www.math.utexas.edu/pipermail/maxima/2007/008152.html
Продолжение переписки http://www.math.utexas.edu/pipermail/maxima/2009/017523.html
приведу его:
«Dear developers,
This is an update to the post by Bruno Daniel found here: http://article.gmane.org/gmane.comp.mathematics.maxima.general/17602
In order to work with the newer versions of Maxima (5.18.1) and SBCL (1.0.29), the code suggested by Mr. Daniel should be changed slightly:
----------------------------------------------------------»
(defpackage :my-package (:use :common-lisp))
(in-package :my-package)
(let ()
(load "/Users/knutgj/Code/usemaxima/maxima-5.18.1/lisp-utils/defsystem.lisp")
;; This creates a lot of warnings in SBCL, but they seem to do no harm:
(load "/Users/knutgj/Code/usemaxima/maxima-5.18.1/src/maxima.system")
(funcall (intern (symbol-name :operate-on-system) :mk) "maxima"
:load :verbose t))
(let ()
(setf maxima::*load-verbose* nil)
(setf *debugger-hook* #'maxima::maxima-lisp-debugger)
(let ((input-stream maxima::*standard-input*)
(batch-flag nil))
(progn
(maxima::set-readtable-for-macsyma)
(setf maxima::*read-default-float-format* 'double-float))
(catch 'to-lisp
(maxima::initialize-real-and-run-time)
(intl::setlocale)
(maxima::set-locale-subdir)
(maxima::adjust-character-encoding)
(maxima::set-pathnames)
(when (boundp 'maxima::*maxima-prefix*)
(push (pathname (concatenate 'string maxima::*maxima-prefix* "/share/locale/"))
intl::*locale-directories*))
(setf (values input-stream batch-flag)
(maxima::process-maxima-args input-stream batch-flag))))
)
(defparameter *maxima-package* (find-package :maxima))
(defun maxima::intern-invert-case (string)
(intern (maxima::maybe-invert-string-case string) *maxima-package*))
также отсюда примерно такой же пример: http://d.hatena.ne.jp/niitsuma/20080328/1226706399 с такой инструкцией:
- call maxima from sbcl
- download maxima-5.16.3.tar.gz from http://maxima.sourceforge.net/
- tar zxf maxima-5.16.3.tar.gz; cd maxima-5.16.3
- LANG=C ./configure --disable-ecl --enable-sbcl --with-default- lisp=sbcl //эта инструкция не понятна вообще, так как то ли относится к настройке emacs, о котором ничего не упоминается, то ли ещё к чему-либо.
- LANG=C make
- LANG=C make check
- suso make install
- sudo checkinstall
- cp -R src /usr/local/share/maxima/5.16.3/
- ln -s /usr/local/share/maxima/5.16.3/src/maxima.asd /usr/share/common-lisp/systems/ comment out ;(:file «ecl-port») in /usr/local/share/maxima/5.16.3/src/maxima.asd need more some comment out line
- cp -R /usr/local/share/maxima/5.16.3/src/binary-sbcl/* /var/cache/
- common-lisp-controller/$MYID/sbcl/local/usr/local/share/maxima/5.16.3/src/
- sbcl
(require :maxima)
(load "/usr/local/share/maxima/5.16.3/lisp-utils/defsystem.lisp")
(load "/usr/local/share/maxima/5.16.3/src/maxima-package.lisp")
(in-package :maxima)
(setf *MAXIMA-TEMPDIR* "/tmp")
($PLOT2D '((MEXPT SIMP) $X 2) '((MLIST SIMP) $X -5 5))
Проблема в том, что я не совсем понимаю, что за это за файлы загружаются (defsystem.lisp и maxima-package.lisp), и почему в примерах они разные. В установленной на windows системе нет таких путей как «/usr/local/...» есть «<user>/AppData/(Local или Roaming)/», но там естественно никаких файлов не лежит. Эти некоторые из файлов смог найти в самой maxima, очевидно там и должны быть.
В общем хотел узнать, что нужно, чтобы загрузить в SBCL maxima. Ещё интерес вызывает компиляция maxima на SBCL.
Заранее спасибо за помощь :)