Here is a small script that I've been using lately. Since some of the
larger share packages (like lapack, minpack, etc.) use mk:defsys to
compile and load the package, it's sometimes useful to be able to call
mk:oos from maxima to process a system.
Of course, you can always do :lisp (mk:oos ...), but here's a interface
for maxima. Load oos.lisp, and then operate_on_system will call mk:oos
with the given arguments.
Ray
(in-package "MAXIMA")
(dolist (p '("affine" "cobyla" "colnew" "lapack" "minpack"))
(mk:add-registry-location (combine-path *maxima-sharedir* p)))
(defun $%operate_on_system (sys operation arglist)
(let*
((options (mapcar #'(lambda (opt)
`((mequal) ,(intern (substitute #\- #\_ (symbol-name
(second opt)))
'#:maxima)
,@(cddr opt)))
(cdr arglist)))
(result
(apply 'mk:oos sys (intern (subseq (symbol-name operation) 1) :keyword)
(lispify-maxima-keyword-options options
'($force $test $verbose
$load-source-instead-of-binary
$load-source-if-no-binary
$bother-user-if-no-binary
$compile-during-load
$dribble
$minimal-load
$override-compilation-unit
)))))
(when result
'$done)))