SLIB
====

SLIB is a portable library of Scheme packages which can be used with Guile and other Scheme implementations.  SLIB is not included in the Guile distribution, but can be installed separately (see SLIB installation).  It is available from http://people.csail.mit.edu/jaffer/SLIB.html.

After SLIB is installed, the following Scheme expression must be executed before the SLIB facilities can be used:

     (use-modules (ice-9 slib))

require can then be used in the usual way (see Require (The SLIB Manual)).  For example,

     (use-modules (ice-9 slib))
     (require 'primes)
     (prime? 13)
     => #t

A few Guile core functions are overridden by the SLIB setups; for example the SLIB version of delete-file returns a boolean indicating success or failure, whereas the Guile core version throws an error for failure.  In general (and as might be expected) when SLIB is loaded it's the SLIB specifications that are followed.

SLIB installation
-----------------

The following procedure works, e.g., with SLIB version 3a3 (see SLIB installation (The SLIB Portable Scheme Library)):

 1. Unpack SLIB and install it using make install from its directory. By default, this will install SLIB in /usr/local/lib/slib/. Running make installinfo installs its documentation, by default under /usr/local/info/.

 2. Define the SCHEME_LIBRARY_PATH environment variable:

          $ SCHEME_LIBRARY_PATH=/usr/local/lib/slib/
          $ export SCHEME_LIBRARY_PATH

     Alternatively, you can create a symlink in the Guile directory to SLIB, e.g.:

          ln -s /usr/local/lib/slib /usr/local/share/guile/EFFECTIVE-VERSION/slib

 3. Use Guile to create the catalog file, e.g.,:

          # guile
          guile> (use-modules (ice-9 slib))
          guile> (require 'new-catalog)
          guile> (quit)

     The catalog data should now be in /usr/local/share/guile/EFFECTIVE-VERSION/slibcat.

     If instead you get an error such as:

          Unbound variable: scheme-implementation-type

     then a solution is to get a newer version of Guile, or to modify ice-9/slib.scm to use define-public for the offending variables.

JACAL
-----

Jacal is a symbolic math package written in Scheme by Aubrey Jaffer. It is usually installed as an extra package in SLIB.

You can use Guile's interface to SLIB to invoke Jacal:

     (use-modules (ice-9 slib))
     (slib:load "math")
     (math)

For complete documentation on Jacal, please read the Jacal manual.  If it has been installed on line, you can look at Jacal (JACAL Symbolic Mathematics System).  Otherwise you can find it on the web at http://www-swiss.ai.mit.edu/~jaffer/JACAL.html