dharmatech/mpl

Computer Algebra and Symbolic Computation for R6RS Scheme

Scheme

65

136 commits

updated Jan 31, 2023

See the code

See what people are saying (1)

SourceMessageScoreDate

What Zig felt like, coming from Rust

You mention there that you like Ruby and that you wanted Ruby with types (and that you looked at Crystal). I've been messing around with a language that I summarize as: ALOE = Scheme + Smalltalk + Types https://github.com/dharmatech/2026-09-02-aloe-racket One of the examples is a very basic…

0

Sep 19, 2026

README

* Setup

    $ cd ~/scheme # Or wherever you keep your Scheme libraries

    $ git clone git@github.com:dharmatech/surfage.git

    $ git clone git@github.com:dharmatech/dharmalab.git

    $ git clone git@github.com:dharmatech/mpl.git

* Running the unit tests

    $ ikarus --r6rs-script test.sps

The unit tests have been run successfully in:

    Ikarus (development version)
    Chez 8.0
    Ypsilon (development version)
    Racket 5.0.2

* About

Implements some of the algorithms in the books:

    Computer Algebra and Symbolic Computation: Elementary Algorithms

and

    Computer Algebra and Symbolic Computation: Mathematical Methods

by Joel S. Cohen.

See 'test.sls' for examples.

See the file 'mpl.org' for more information.

* A couple of essential libraries

library: (mpl rnrs-sans)

Exports all of '(rnrs)' except for procedures which conflict with
those provided by the mpl libraries.

So basically, if you usually begin your R6RS code by importing
'(rnrs)' and you'd like to make use of the MPL libraries without
having to worry about naming conflicts, import '(mpl rnrs-sans)'
instead.


library: (mpl all)

Exports the commonly used procedures and macros offered by MPL.

It is generally the case each MPL component is defined in it's own
library. For example, the the library '(mpl algebraic-expand)' exports
the single procedure 'algebraic-expand'. When designing R6RS libraries
which make use of MPL libraries, many users will choose to import
individual MPL libraries a la carte. However, when you're
experimenting at a REPL, it can get tedious to import the libraries
individually. Thus the '(mpl all)' library is provided so that you can
get the common parts of MPL in one import.

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

dharmatech

135 commits

lemastero

1 commits

dharmatech/mpl

Computer Algebra and Symbolic Computation for R6RS Scheme

Scheme

65

136 commits

updated Jan 31, 2023

See the code

See what people are saying (1)

SourceMessageScoreDate

What Zig felt like, coming from Rust

You mention there that you like Ruby and that you wanted Ruby with types (and that you looked at Crystal). I've been messing around with a language that I summarize as: ALOE = Scheme + Smalltalk + Types https://github.com/dharmatech/2026-09-02-aloe-racket One of the examples is a very basic…

0

Sep 19, 2026

README

* Setup

    $ cd ~/scheme # Or wherever you keep your Scheme libraries

    $ git clone git@github.com:dharmatech/surfage.git

    $ git clone git@github.com:dharmatech/dharmalab.git

    $ git clone git@github.com:dharmatech/mpl.git

* Running the unit tests

    $ ikarus --r6rs-script test.sps

The unit tests have been run successfully in:

    Ikarus (development version)
    Chez 8.0
    Ypsilon (development version)
    Racket 5.0.2

* About

Implements some of the algorithms in the books:

    Computer Algebra and Symbolic Computation: Elementary Algorithms

and

    Computer Algebra and Symbolic Computation: Mathematical Methods

by Joel S. Cohen.

See 'test.sls' for examples.

See the file 'mpl.org' for more information.

* A couple of essential libraries

library: (mpl rnrs-sans)

Exports all of '(rnrs)' except for procedures which conflict with
those provided by the mpl libraries.

So basically, if you usually begin your R6RS code by importing
'(rnrs)' and you'd like to make use of the MPL libraries without
having to worry about naming conflicts, import '(mpl rnrs-sans)'
instead.


library: (mpl all)

Exports the commonly used procedures and macros offered by MPL.

It is generally the case each MPL component is defined in it's own
library. For example, the the library '(mpl algebraic-expand)' exports
the single procedure 'algebraic-expand'. When designing R6RS libraries
which make use of MPL libraries, many users will choose to import
individual MPL libraries a la carte. However, when you're
experimenting at a REPL, it can get tedious to import the libraries
individually. Thus the '(mpl all)' library is provided so that you can
get the common parts of MPL in one import.

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

dharmatech

135 commits

lemastero

1 commits

Languages

Scheme

100.0%