]> git.donarmstrong.com Git - lilypond.git/blob - guile18/doc/ref/slib.texi
Import guile-1.8 as multiple upstream tarball component
[lilypond.git] / guile18 / doc / ref / slib.texi
1 @c -*-texinfo-*-
2 @c This is part of the GNU Guile Reference Manual.
3 @c Copyright (C)  1996, 1997, 2000, 2001, 2002, 2003, 2004, 2007
4 @c   Free Software Foundation, Inc.
5 @c See the file guile.texi for copying conditions.
6
7 @page
8 @node SLIB
9 @section SLIB
10 @cindex SLIB
11
12 Before the SLIB facilities can be used, the following Scheme expression
13 must be executed:
14
15 @smalllisp
16 (use-modules (ice-9 slib))
17 @end smalllisp
18
19 @findex require
20 @code{require} can then be used in the usual way (@pxref{Require,,,
21 slib, The SLIB Manual}).  For example,
22
23 @example
24 (use-modules (ice-9 slib))
25 (require 'primes)
26 (prime? 13)
27 @result{} #t
28 @end example
29
30 A few Guile core functions are overridden by the SLIB setups; for
31 example the SLIB version of @code{delete-file} returns a boolean
32 indicating success or failure, whereas the Guile core version throws
33 an error for failure.  In general (and as might be expected) when SLIB
34 is loaded it's the SLIB specifications that are followed.
35
36 @menu
37 * SLIB installation::
38 * JACAL::
39 @end menu
40
41 @node SLIB installation
42 @subsection SLIB installation
43
44 The following procedure works, e.g., with SLIB version 3a3
45 (@pxref{Installation, SLIB installation,, slib, The SLIB Portable Scheme
46 Library}):
47
48 @enumerate
49 @item
50 Unpack SLIB and install it using @code{make install} from its directory.
51 By default, this will install SLIB in @file{/usr/local/lib/slib/}.
52 Running @code{make installinfo} installs its documentation, by default
53 under @file{/usr/local/info/}.
54
55 @item
56 Define the @code{SCHEME_LIBRARY_PATH} environment variable:
57
58 @example
59 $ SCHEME_LIBRARY_PATH=/usr/local/lib/slib/
60 $ export SCHEME_LIBRARY_PATH
61 @end example
62
63 Alternatively, you can create a symlink in the Guile directory to SLIB,
64 e.g.:
65
66 @example
67 ln -s /usr/local/lib/slib /usr/local/share/guile/1.8/slib
68 @end example
69
70 @item
71 Use Guile to create the catalog file, e.g.,:
72
73 @example
74 # guile
75 guile> (use-modules (ice-9 slib))
76 guile> (require 'new-catalog)
77 guile> (quit)
78 @end example
79
80 The catalog data should now be in
81 @file{/usr/local/share/guile/1.8/slibcat}.
82
83 If instead you get an error such as:
84
85 @example
86 Unbound variable: scheme-implementation-type
87 @end example
88
89 then a solution is to get a newer version of Guile,
90 or to modify @file{ice-9/slib.scm} to use @code{define-public} for the
91 offending variables.
92
93 @end enumerate
94
95 @node JACAL
96 @subsection JACAL
97 @cindex JACAL
98
99 @cindex Jaffer, Aubrey
100 @cindex symbolic math
101 @cindex math -- symbolic
102 Jacal is a symbolic math package written in Scheme by Aubrey Jaffer.
103 It is usually installed as an extra package in SLIB.
104
105 You can use Guile's interface to SLIB to invoke Jacal:
106
107 @smalllisp
108 (use-modules (ice-9 slib))
109 (slib:load "math")
110 (math)
111 @end smalllisp
112
113 @noindent
114 For complete documentation on Jacal, please read the Jacal manual.  If
115 it has been installed on line, you can look at @ref{Top, , Jacal, jacal,
116 JACAL Symbolic Mathematics System}.  Otherwise you can find it on the web at
117 @url{http://www-swiss.ai.mit.edu/~jaffer/JACAL.html}
118
119
120 @c Local Variables:
121 @c TeX-master: "guile.texi"
122 @c End: