summaryrefslogtreecommitdiff
path: root/doc/ref/slib.texi
blob: d3357c97f810973e123c550296256882d9999e1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
@c -*-texinfo-*-
@c This is part of the GNU Guile Reference Manual.
@c Copyright (C)  1996, 1997, 2000, 2001, 2002, 2003, 2004, 2007
@c   Free Software Foundation, Inc.
@c See the file guile.texi for copying conditions.

@node SLIB
@section SLIB
@cindex SLIB

Before the SLIB facilities can be used, the following Scheme expression
must be executed:

@lisp
(use-modules (ice-9 slib))
@end lisp

@findex require
@code{require} can then be used in the usual way (@pxref{Require,,,
slib, The SLIB Manual}).  For example,

@example
(use-modules (ice-9 slib))
(require 'primes)
(prime? 13)
@result{} #t
@end example

A few Guile core functions are overridden by the SLIB setups; for
example the SLIB version of @code{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.

@menu
* SLIB installation::
* JACAL::
@end menu

@node SLIB installation
@subsection SLIB installation

The following procedure works, e.g., with SLIB version 3a3
(@pxref{Installation, SLIB installation,, slib, The SLIB Portable Scheme
Library}):

@enumerate
@item
Unpack SLIB and install it using @code{make install} from its directory.
By default, this will install SLIB in @file{/usr/local/lib/slib/}.
Running @code{make installinfo} installs its documentation, by default
under @file{/usr/local/info/}.

@item
Define the @code{SCHEME_LIBRARY_PATH} environment variable:

@example
$ SCHEME_LIBRARY_PATH=/usr/local/lib/slib/
$ export SCHEME_LIBRARY_PATH
@end example

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

@example
ln -s /usr/local/lib/slib /usr/local/share/guile/@value{EFFECTIVE-VERSION}/slib
@end example

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

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

The catalog data should now be in
@file{/usr/local/share/guile/@value{EFFECTIVE-VERSION}/slibcat}.

If instead you get an error such as:

@example
Unbound variable: scheme-implementation-type
@end example

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

@end enumerate

@node JACAL
@subsection JACAL
@cindex JACAL

@cindex Jaffer, Aubrey
@cindex symbolic math
@cindex math -- symbolic
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:

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

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


@c Local Variables:
@c TeX-master: "guile.texi"
@c End: