This page is about possibilities for using the CL package system within the Maxima implementation. For some ideas about a user-level package system, see User-level namespaces in Maxima.
To begin with, here are links to previous discussions from the Maxima mailing list, in chronological order. Feel free to add more.
This email includes a partial implimentation:
Other discussion: (Be sure to check for other emails in the linked threads)
using common lisp packages to avoid re-definitions/ powerset
Re: set.lisp redefines POWERSET / {} for sets
Re: set.lisp redefines POWERSET / {} for sets
How to decide what to kill
How to decide what to kill / packages
How to decide what to kill / packages
How to decide what to kill / packages
How to decide what to kill / packages
How to decide what to kill / packages
Protecting variables
common lisp package system
Case-sensitivity goals, policy and implementation
Re: packages, objection orientation, list of functions (was case
Re: Case-sensitivity goals, policy and implementationMore recently, the issue was raised here:
It was concluded it would be a good idea to have discussions centralized in one location, and this page seems to be the logical choice.
So it exists somewhere, here is some (rather elementary) preliminary work. It would probably be better to polish up the maxima-user work that has already been done, but this is quick and (in theory) works perfectly for what I (CY) have in mind:
;; This set of commands makes EVERY symbol in MAXIMA
;; external, and then defines a maxima-user package
;; which imports all of them. Basically, we just
;; cloned MAXIMA. By itself, this isn't very exciting,
;; but it sets the stage for things to come.
(do-symbols (s (find-package "MAXIMA")) (export s "MAXIMA"))
(defpackage :maxima-user
(:use :maxima))
;; Now we get slightly more interesting:
(defpackage :maxima-declarations
(:use :maxima))
(defpackage :maxima-destructuring-let
(:use :maxima))
(defpackage :maxima-compatibility-macros1
(:use :maxima))
(defpackage :maxima-compatibility-macros
(:use :maxima))
(defpackage :maxima-prerequisites
(:use :maxima))
;; This one is apparently already defined
;;(defpackage :maxima-command-line
;; (:use :maxima))
(defpackage :maxima-fundamental-macros
(:use :maxima))
(defpackage :maxima-utility-macros
(:use :maxima))
(defpackage :maxima-other-macros
(:use :maxima))
(defpackage :maxima-rat-macros
(:use :maxima))
(defpackage :maxima-numerical-macros
(:use :maxima))
(defpackage :maxima-commands
(:use :maxima))
(defpackage :maxima-evaluator
(:use :maxima))
(defpackage :maxima-numerical
(:use :maxima))
(defpackage :maxima-simplification
(:use :maxima))
(defpackage :maxima-server
(:use :maxima))
(defpackage :maxima-i-o
(:use :maxima))
(defpackage :maxima-factoring
(:use :maxima))
(defpackage :maxima-rational-functions
(:use :maxima))
(defpackage :maxima-language-compiler-macros
(:use :maxima))
(defpackage :maxima-language-compiler
(:use :maxima))
(defpackage :maxima-numerical-functions
(:use :maxima))
(defpackage :maxima-reader
(:use :maxima))
(defpackage :maxima-display
(:use :maxima))
(defpackage :maxima-gcd
(:use :maxima))
(defpackage :maxima-documentation
(:use :maxima))
(defpackage :maxima-algebraic-database
(:use :maxima))
(defpackage :maxima-integration
(:use :maxima))
(defpackage :maxima-definite-integration
(:use :maxima))
(defpackage :maxima-taylor-series
(:use :maxima))
(defpackage :maxima-trigonometry
(:use :maxima))
(defpackage :maxima-special-functions
(:use :maxima))
(defpackage :maxima-matrix-algebra
(:use :maxima))
(defpackage :maxima-determinants
(:use :maxima))
(defpackage :maxima-pattern-matching
(:use :maxima))
(defpackage :maxima-limits
(:use :maxima))
(defpackage :maxima-solve
(:use :maxima))
(defpackage :maxima-debugging
(:use :maxima))
(defpackage :maxima-miscellaneous
(:use :maxima))
(defpackage :maxima-poisson-series
(:use :maxima))
(defpackage :maxima-sets
(:use :maxima))
(defpackage :maxima-fortran
(:use :maxima))
(defpackage :maxima-ordinary-differential-equations
(:use :maxima))
(defpackage :maxima-laplace
(:use :maxima))
(defpackage :maxima-TeX
(:use :maxima :common-lisp)
(:shadow common-lisp:tan common-lisp:tanh common-lisp:continue
common-lisp:gcd common-lisp:signum common-lisp:complement
common-lisp:cosh common-lisp:array common-lisp:asinh
common-lisp:sinh common-lisp:functionp common-lisp:acosh
common-lisp:float common-lisp:atan common-lisp:exp
common-lisp:acos common-lisp:makunbound common-lisp://
common-lisp:atanh common-lisp:asin common-lisp:listen
common-lisp:break))
(defpackage :maxima-plotting
(:use :maxima))
(defpackage :maxima-initialization
(:use :maxima))
(use-package :maxima-declarations :maxima-user)
(use-package :maxima-destructuring-let :maxima-user)
(use-package :maxima-compatibility-macros1 :maxima-user)
(use-package :maxima-compatibility-macros :maxima-user)
(use-package :maxima-prerequisites :maxima-user)
;;(use-package :maxima-command-line :maxima-user)
(use-package :maxima-fundamental-macros :maxima-user)
(use-package :maxima-utility-macros :maxima-user)
(use-package :maxima-other-macros :maxima-user)
(use-package :maxima-rat-macros :maxima-user)
(use-package :maxima-numerical-macros :maxima-user)
(use-package :maxima-commands :maxima-user)
(use-package :maxima-evaluator :maxima-user)
(use-package :maxima-numerical :maxima-user)
(use-package :maxima-simplification :maxima-user)
(use-package :maxima-server :maxima-user)
(use-package :maxima-i-o :maxima-user)
(use-package :maxima-factoring :maxima-user)
(use-package :maxima-rational-functions :maxima-user)
(use-package :maxima-language-compiler-macros :maxima-user)
(use-package :maxima-language-compiler :maxima-user)
(use-package :maxima-numerical-functions :maxima-user)
(use-package :maxima-reader :maxima-user)
(use-package :maxima-display :maxima-user)
(use-package :maxima-gcd :maxima-user)
(use-package :maxima-documentation :maxima-user)
(use-package :maxima-algebraic-database :maxima-user)
(use-package :maxima-integration :maxima-user)
(use-package :maxima-definite-integration :maxima-user)
(use-package :maxima-taylor-series :maxima-user)
(use-package :maxima-trigonometry :maxima-user)
(use-package :maxima-special-functions :maxima-user)
(use-package :maxima-matrix-algebra :maxima-user)
(use-package :maxima-determinants :maxima-user)
(use-package :maxima-pattern-matching :maxima-user)
(use-package :maxima-limits :maxima-user)
(use-package :maxima-solve :maxima-user)
(use-package :maxima-debugging :maxima-user)
(use-package :maxima-miscellaneous :maxima-user)
(use-package :maxima-poisson-series :maxima-user)
(use-package :maxima-sets :maxima-user)
(use-package :maxima-fortran :maxima-user)
(use-package :maxima-ordinary-differential-equations :maxima-user)
(use-package :maxima-laplace :maxima-user)
(use-package :maxima-TeX :maxima-user)
(use-package :maxima-plotting :maxima-user)
(use-package :maxima-initialization :maxima-user)
;; OK, so what just happened? We defined a whole lot of
;; empty packages, and had them all import the MAXIMA package,
;; in effect creating a large number of gateways to the MAXIMA
;; environment. The reason for this is to allow us to begin
;; to separate out logical groupings of Maxima commands without
;; riping Maxima apart functionally speaking. Now we can create
;; files for each of these packages, and move selected definitions
;; to them rather than having them in MAXIMA.
;; Now, we'll load the package files that have been created.
;; Currently, that's just the TeX package.
(load "./src/TeX-package.lisp")