Added Copyright notice.
[bpt/guile.git] / doc / ref / scheme-options.texi
CommitLineData
2da09c3f
MV
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
4@c Free Software Foundation, Inc.
5@c See the file guile.texi for copying conditions.
6
a0e07ba4
NJ
7@page
8@node Options and Config
c936bede 9@chapter Configuration, Features and Runtime Options
a0e07ba4 10
c936bede
NJ
11Why is my Guile different from your Guile? There are three kinds of
12possible variation:
13
14@itemize @bullet
15@item
16build differences --- different versions of the Guile source code,
17installation directories, configuration flags that control pieces of
18functionality being included or left out, etc.
19
20@item
21differences in dynamically loaded code --- behaviour and features
22provided by modules that can be dynamically loaded into a running Guile
23
24@item
25different runtime options --- some of the options that are provided for
26controlling Guile's behaviour may be set differently.
27@end itemize
28
29Guile provides ``introspective'' variables and procedures to query all
30of these possible variations at runtime. For runtime options, it also
31provides procedures to change the settings of options and to obtain
32documentation on what the options mean.
33
34@menu
35* Build Config:: Build and installation configuration.
36* Feature Tracking:: Available features in the Guile process.
37* Runtime Options:: Controlling Guile's runtime behaviour.
38@end menu
39
40
41@node Build Config
42@section Configuration, Build and Installation
43
44The following procedures and variables provide information about how
45Guile was configured, built and installed on your system.
46
47@deffn {Scheme Procedure} version
467409e8 48@deffnx {Scheme Procedure} effective-version
c936bede
NJ
49@deffnx {Scheme Procedure} major-version
50@deffnx {Scheme Procedure} minor-version
51@deffnx {Scheme Procedure} micro-version
52@deffnx {C Function} scm_version ()
467409e8 53@deffnx {C Function} scm_effective_version ()
c936bede
NJ
54@deffnx {C Function} scm_major_version ()
55@deffnx {C Function} scm_minor_version ()
56@deffnx {C Function} scm_micro_version ()
467409e8
RB
57Return a string describing Guile's full version number, effective
58version number, major, minor or micro version number, respectively.
59The @code{effective-version} function returns the version name that
60should remain unchanged during a stable series. Currently that means
61that it omits the micro version. The effective version should be used
62for items like the versioned share directory name
63i.e. @file{/usr/share/guile/1.6/}
c936bede
NJ
64
65@lisp
66(version) @result{} "1.6.0"
467409e8 67(effective-version) @result{} "1.6"
c936bede
NJ
68(major-version) @result{} "1"
69(minor-version) @result{} "6"
70(micro-version) @result{} "0"
71@end lisp
72@end deffn
73
74@deffn {Scheme Procedure} %package-data-dir
75@deffnx {C Function} scm_sys_package_data_dir ()
76Return the name of the directory under which Guile Scheme files in
77general are stored. On Unix-like systems, this is usually
78@file{/usr/local/share/guile} or @file{/usr/share/guile}.
79@end deffn
80
81@deffn {Scheme Procedure} %library-dir
82@deffnx {C Function} scm_sys_library_dir ()
83Return the name of the directory where the Guile Scheme files that
84belong to the core Guile installation (as opposed to files from a 3rd
85party package) are installed. On Unix-like systems, this is usually
467409e8
RB
86@file{/usr/local/share/guile/<GUILE_EFFECTIVE_VERSION>} or
87@file{/usr/share/guile/<GUILE_EFFECTIVE_VERSION>}, for example:
88@file{/usr/local/share/guile/1.6}.
c936bede
NJ
89@end deffn
90
91@deffn {Scheme Procedure} %site-dir
92@deffnx {C Function} scm_sys_site_dir ()
93Return the name of the directory where Guile Scheme files specific to
94your site should be installed. On Unix-like systems, this is usually
95@file{/usr/local/share/guile/site} or @file{/usr/share/guile/site}.
96@end deffn
97
98@cindex GUILE_LOAD_PATH
99@defvar %load-path
100List of directories which should be searched for Scheme modules and
101libraries. @code{%load-path} is initialized when Guile starts up to
102@code{(list (%site-dir) (%library-dir) (%package-data-dir) ".")},
103prepended with the contents of the GUILE_LOAD_PATH environment variable,
104if it is set.
105@end defvar
106
107@deffn {Scheme Procedure} parse-path path [tail]
108@deffnx {C Function} scm_parse_path (path, tail)
109Parse @var{path}, which is expected to be a colon-separated
110string, into a list and return the resulting list with
111@var{tail} appended. If @var{path} is @code{#f}, @var{tail}
112is returned.
113@end deffn
114
115@deffn {Scheme Procedure} search-path path filename [extensions]
116@deffnx {C Function} scm_search_path (path, filename, extensions)
117Search @var{path} for a directory containing a file named
118@var{filename}. The file must be readable, and not a directory.
119If we find one, return its full filename; otherwise, return
120@code{#f}. If @var{filename} is absolute, return it unchanged.
121If given, @var{extensions} is a list of strings; for each
122directory in @var{path}, we search for @var{filename}
123concatenated with each @var{extension}.
124@end deffn
125
126@defvar %guile-build-info
127Alist of information collected during the building of a particular
128Guile. Entries can be grouped into one of several categories:
129directories, env vars, and versioning info.
130
131Briefly, here are the keys in @code{%guile-build-info}, by group:
132
14b454a7
KR
133@cindex @code{srcdir}
134@cindex @code{top_srcdir}
135@cindex @code{prefix}
136@cindex @code{exec_prefix}
137@cindex @code{bindir}
138@cindex @code{sbindir}
139@cindex @code{libexecdir}
140@cindex @code{datadir}
141@cindex @code{sysconfdir}
142@cindex @code{sharedstatedir}
143@cindex @code{localstatedir}
144@cindex @code{libdir}
145@cindex @code{infodir}
146@cindex @code{mandir}
147@cindex @code{includedir}
148@cindex @code{pkgdatadir}
149@cindex @code{pkglibdir}
150@cindex @code{pkgincludedir}
c936bede
NJ
151@table @asis
152@item directories
153srcdir, top_srcdir, prefix, exec_prefix, bindir, sbindir, libexecdir,
154datadir, sysconfdir, sharedstatedir, localstatedir, libdir, infodir,
155mandir, includedir, pkgdatadir, pkglibdir, pkgincludedir
14b454a7 156@cindex @code{LIBS}
c936bede
NJ
157@item env vars
158LIBS
14b454a7
KR
159@cindex @code{guileversion}
160@cindex @code{libguileinterface}
161@cindex @code{buildstamp}
c936bede
NJ
162@item versioning info
163guileversion, libguileinterface, buildstamp
164@end table
165
166Values are all strings. The value for @code{LIBS} is typically found
167also as a part of "guile-config link" output. The value for
168@code{guileversion} has form X.Y.Z, and should be the same as returned
169by @code{(version)}. The value for @code{libguileinterface} is libtool
170compatible and has form CURRENT:REVISION:AGE. The value for
171@code{buildstamp} is the output of the date(1) command.
172
173In the source, @code{%guile-build-info} is initialized from
174libguile/libpath.h, which is completely generated, so deleting this file
175before a build guarantees up-to-date values for that build.
176@end defvar
177
178
179@node Feature Tracking
180@section Feature Tracking
181
182Guile has a Scheme level variable @code{*features*} that keeps track to
183some extent of the features that are available in a running Guile.
184@code{*features*} is a list of symbols, for example @code{threads}, each
185of which describes a feature of the running Guile process.
186
187@defvar *features*
188A list of symbols describing available features of the Guile process.
189@end defvar
190
191You shouldn't modify the @code{*features*} variable directly using
192@code{set!}. Instead, see the procedures that are provided for this
193purpose in the following subsection.
194
195@menu
196* Feature Manipulation:: Checking for and advertising features.
197* Common Feature Symbols:: Commonly available features.
198@end menu
199
200
201@node Feature Manipulation
202@subsection Feature Manipulation
203
204To check whether a particular feature is available, use the
205@code{provided?} procedure:
206
207@deffn {Scheme Procedure} provided? feature
208@deffnx {Deprecated Scheme Procedure} feature? feature
209Return @code{#t} if the specified @var{feature} is available, otherwise
210@code{#f}.
211@end deffn
212
213To advertise a feature from your own Scheme code, you can use the
214@code{provide} procedure:
215
216@deffn {Scheme Procedure} provide feature
217Add @var{feature} to the list of available features in this Guile
218process.
219@end deffn
220
221For C code, the equivalent function takes its feature name as a
222@code{char *} argument for convenience:
223
224@deftypefn {C Function} void scm_add_feature (const char *str)
225Add a symbol with name @var{str} to the list of available features in
226this Guile process.
227@end deftypefn
228
229
230@node Common Feature Symbols
231@subsection Common Feature Symbols
232
233In general, a particular feature may be available for one of two
234reasons. Either because the Guile library was configured and compiled
235with that feature enabled --- i.e. the feature is built into the library
236on your system. Or because some C or Scheme code that was dynamically
237loaded by Guile has added that feature to the list.
238
239In the first category, here are the features that the current version of
240Guile may define (depending on how it is built), and what they mean.
241
242@table @code
243@item array
244Indicates support for arrays (@pxref{Arrays}).
245
246@item array-for-each
247Indicates availability of @code{array-for-each} and other array mapping
248procedures (@pxref{Array Mapping}).
249
250@item char-ready?
251Indicates that the @code{char-ready?} function is available
252(@pxref{Reading}).
253
254@item complex
255Indicates support for complex numbers.
256
257@item current-time
258Indicates availability of time-related functions: @code{times},
259@code{get-internal-run-time} and so on (@pxref{Time}).
260
261@item debug-extensions
262Indicates that the debugging evaluator is available, together with the
263options for controlling it.
264
265@item delay
266Indicates support for promises (@pxref{Delayed Evaluation}).
267
268@item EIDs
269Indicates that the @code{geteuid} and @code{getegid} really return
270effective user and group IDs (@pxref{Processes}).
271
272@item inexact
273Indicates support for inexact numbers.
274
275@item i/o-extensions
276Indicates availability of the following extended I/O procedures:
277@code{ftell}, @code{redirect-port}, @code{dup->fdes}, @code{dup2},
278@code{fileno}, @code{isatty?}, @code{fdopen},
279@code{primitive-move->fdes} and @code{fdes->ports} (@pxref{Ports and
280File Descriptors}).
281
282@item net-db
283Indicates availability of network database functions:
284@code{scm_gethost}, @code{scm_getnet}, @code{scm_getproto},
285@code{scm_getserv}, @code{scm_sethost}, @code{scm_setnet}, @code{scm_setproto},
286@code{scm_setserv}, and their `byXXX' variants (@pxref{Network
287Databases}).
288
289@item posix
290Indicates support for POSIX functions: @code{pipe}, @code{getgroups},
291@code{kill}, @code{execl} and so on (@pxref{POSIX}).
292
293@item random
294Indicates availability of random number generation functions:
295@code{random}, @code{copy-random-state}, @code{random-uniform} and so on
296(@pxref{Random}).
297
298@item reckless
299Indicates that Guile was built with important checks omitted --- you
300should never see this!
301
302@item regex
303Indicates support for POSIX regular expressions using
304@code{make-regexp}, @code{regexp-exec} and friends (@pxref{Regexp
305Functions}).
306
307@item socket
308Indicates availability of socket-related functions: @code{socket},
309@code{bind}, @code{connect} and so on (@pxref{Network Sockets and
310Communication}).
311
312@item sort
313Indicates availability of sorting and merging functions
314(@pxref{Sorting}).
315
316@item system
317Indicates that the @code{system} function is available
318(@pxref{Processes}).
319
320@item threads
321Indicates support for multithreading (@pxref{Threads}).
322
323@item values
324Indicates support for multiple return values using @code{values} and
325@code{call-with-values} (@pxref{Multiple Values}).
326@end table
327
328Available features in the second category depend, by definition, on what
329additional code your Guile process has loaded in. The following table
330lists features that you might encounter for this reason.
331
332@table @code
333@item defmacro
334Indicates that the @code{defmacro} macro is available (@pxref{Macros}).
335
336@item describe
337Indicates that the @code{(oop goops describe)} module has been loaded,
338which provides a procedure for describing the contents of GOOPS
339instances.
340
341@item readline
342Indicates that Guile has loaded in Readline support, for command line
343editing (@pxref{Readline Support}).
344
345@item record
346Indicates support for record definition using @code{make-record-type}
347and friends (@pxref{Records}).
348@end table
349
350Although these tables may seem exhaustive, it is probably unwise in
351practice to rely on them, as the correspondences between feature symbols
352and available procedures/behaviour are not strictly defined. If you are
353writing code that needs to check for the existence of some procedure, it
354is probably safer to do so directly using the @code{defined?} procedure
66add4eb 355than to test for the corresponding feature using @code{provided?}.
c936bede
NJ
356
357
358@node Runtime Options
359@section Runtime Options
360
361Guile's runtime behaviour can be modified by setting options. For
362example, is the language that Guile accepts case sensitive, or should
363the debugger automatically show a backtrace on error?
a0e07ba4
NJ
364
365Guile has two levels of interface for managing options: a low-level
366control interface, and a user-level interface which allows the enabling
367or disabling of options.
368
369Moreover, the options are classified in groups according to whether they
370configure @emph{reading}, @emph{printing}, @emph{debugging} or
371@emph{evaluating}.
372
373@menu
c936bede
NJ
374* Low level options interfaces::
375* User level options interfaces::
a0e07ba4
NJ
376* Reader options::
377* Printing options::
378* Debugger options::
379* Evaluator options::
380* Evaluator trap options::
381* Examples of option use::
a0e07ba4
NJ
382@end menu
383
a0e07ba4 384
c936bede
NJ
385@node Low level options interfaces
386@subsection Low Level Options Interfaces
387
388@deffn {Scheme Procedure} read-options-interface [setting]
389@deffnx {Scheme Procedure} eval-options-interface [setting]
390@deffnx {Scheme Procedure} print-options-interface [setting]
391@deffnx {Scheme Procedure} debug-options-interface [setting]
392@deffnx {Scheme Procedure} evaluator-traps-interface [setting]
393@deffnx {C Function} scm_read_options (setting)
394@deffnx {C Function} scm_eval_options_interface (setting)
395@deffnx {C Function} scm_print_options (setting)
396@deffnx {C Function} scm_debug_options (setting)
397@deffnx {C Function} scm_evaluator_traps (setting)
398If one of these procedures is called with no arguments (or with
399@code{setting == SCM_UNDEFINED} in C code), it returns a list describing
400the current setting of the read, eval, print, debug or evaluator traps
401options respectively. The setting of a boolean option is indicated
402simply by the presence or absence of the option symbol in the list. The
403setting of a non-boolean option is indicated by the presence of the
404option symbol immediately followed by the option's current value.
405
406If called with a list argument, these procedures interpret the list as
407an option setting and modify the relevant options accordingly. [FIXME
408--- this glosses over a lot of details!]
409
410If called with any other argument, such as @code{'help}, these
411procedures return a list of entries like @code{(@var{OPTION-SYMBOL}
412@var{DEFAULT-VALUE} @var{DOC-STRING})}, with each entry giving the
413default value and documentation for each option symbol in the relevant
414set of options.
a0e07ba4
NJ
415@end deffn
416
417
c936bede
NJ
418@node User level options interfaces
419@subsection User Level Options Interfaces
a0e07ba4
NJ
420
421@c @deftp {Data type} scm_option
422@c @code{scm_option} is used to represent run time options. It can be a
423@c @emph{boolean} type, in which case the option will be set by the strings
424@c @code{"yes"} and @code{"no"}. It can be a
425@c @end deftp
426
427@c NJFIXME
8f85c0c6
NJ
428@deffn {Scheme Procedure} <group>-options [arg]
429@deffnx {Scheme Procedure} read-options [arg]
430@deffnx {Scheme Procedure} print-options [arg]
431@deffnx {Scheme Procedure} debug-options [arg]
432@deffnx {Scheme Procedure} traps [arg]
a0e07ba4
NJ
433These functions list the options in their group. The optional argument
434@var{arg} is a symbol which modifies the form in which the options are
435presented.
436
437With no arguments, @code{<group>-options} returns the values of the
438options in that particular group. If @var{arg} is @code{'help}, a
439description of each option is given. If @var{arg} is @code{'full},
440programmers' options are also shown.
441
442@var{arg} can also be a list representing the state of all options. In
443this case, the list contains single symbols (for enabled boolean
444options) and symbols followed by values.
445@end deffn
446[FIXME: I don't think 'full is ever any different from 'help. What's
447up?]
448
449@c NJFIXME
8f85c0c6
NJ
450@deffn {Scheme Procedure} <group>-enable option-symbol
451@deffnx {Scheme Procedure} read-enable option-symbol
452@deffnx {Scheme Procedure} print-enable option-symbol
453@deffnx {Scheme Procedure} debug-enable option-symbol
454@deffnx {Scheme Procedure} trap-enable option-symbol
a0e07ba4
NJ
455These functions set the specified @var{option-symbol} in their options
456group. They only work if the option is boolean, and throw an error
457otherwise.
458@end deffn
459
460@c NJFIXME
8f85c0c6
NJ
461@deffn {Scheme Procedure} <group>-disable option-symbol
462@deffnx {Scheme Procedure} read-disable option-symbol
463@deffnx {Scheme Procedure} print-disable option-symbol
464@deffnx {Scheme Procedure} debug-disable option-symbol
465@deffnx {Scheme Procedure} trap-disable option-symbol
a0e07ba4
NJ
466These functions turn off the specified @var{option-symbol} in their
467options group. They only work if the option is boolean, and throw an
468error otherwise.
469@end deffn
470
471@c NJFIXME
472@deffn syntax <group>-set! option-symbol value
473@deffnx syntax read-set! option-symbol value
474@deffnx syntax print-set! option-symbol value
475@deffnx syntax debug-set! option-symbol value
476@deffnx syntax trap-set! option-symbol value
477These functions set a non-boolean @var{option-symbol} to the specified
478@var{value}.
479@end deffn
480
481
482@node Reader options
c936bede 483@subsection Reader options
a0e07ba4
NJ
484@cindex options - read
485@cindex read options
486
487Here is the list of reader options generated by typing
488@code{(read-options 'full)} in Guile. You can also see the default
489values.
490
491@smalllisp
492keywords #f Style of keyword recognition: #f or 'prefix
493case-insensitive no Convert symbols to lower case.
494positions yes Record positions of source code expressions.
495copy no Copy source code expressions.
496@end smalllisp
497
498Notice that while Standard Scheme is case insensitive, to ease
499translation of other Lisp dialects, notably Emacs Lisp, into Guile,
500Guile is case-sensitive by default.
501
502To make Guile case insensitive, you can type
503
504@smalllisp
505(read-enable 'case-insensitive)
506@end smalllisp
507
508@node Printing options
c936bede 509@subsection Printing options
a0e07ba4
NJ
510
511Here is the list of print options generated by typing
512@code{(print-options 'full)} in Guile. You can also see the default
513values.
514
515@smallexample
516source no Print closures with source.
517closure-hook #f Hook for printing closures.
518@end smallexample
519
520
521@node Evaluator options
c936bede 522@subsection Evaluator options
413d32b6 523
a0e07ba4
NJ
524These are the evaluator options with their default values, as they are
525printed by typing @code{(eval-options 'full)} in Guile.
526
527@smallexample
528stack 22000 Size of thread stacks (in machine words).
529@end smallexample
530
c936bede 531
a0e07ba4 532@node Evaluator trap options
c936bede 533@subsection Evaluator trap options
a0e07ba4
NJ
534[FIXME: These flags, together with their corresponding handlers, are not
535user level options. Probably this entire section should be moved to the
536documentation about the low-level programmer debugging interface.]
537
538Here is the list of evaluator trap options generated by typing
539@code{(traps 'full)} in Guile. You can also see the default values.
540
541@smallexample
542exit-frame no Trap when exiting eval or apply.
543apply-frame no Trap when entering apply.
544enter-frame no Trap when eval enters new frame.
545traps yes Enable evaluator traps.
546@end smallexample
547
548@deffn apply-frame-handler key cont tailp
549Called when a procedure is being applied.
550
551Called if:
552
553@itemize @bullet
554@item
555evaluator traps are enabled [traps interface], and
556@item
557either
558@itemize @minus
559@item
560@code{apply-frame} is enabled [traps interface], or
561@item
562trace mode is on [debug-options interface], and the procedure being
563called has the trace property enabled.
564@end itemize
565@end itemize
566
567If cheap traps are enabled [debug-options interface], @var{cont} is a
568debug object, otherwise it is a restartable continuation.
569
570@var{tailp} is true if this is a tail call
571@end deffn
572
573@deffn exit-frame-handler key cont retval
574Called when a value is returned from a procedure.
575
576Called if:
577
578@itemize @bullet
579@item
580evaluator traps are enabled [traps interface], and
581@item
582either
583@itemize @minus
584@item
585 @code{exit-frame} is enabled [traps interface], or
586@item
587trace mode is on [debug-options interface], and the procedure being
588called has the trace property enabled.
589@end itemize
590@end itemize
591
592If cheap traps are enabled [debug-options interface], @var{cont} is a
593debug object, otherwise it is a restartable continuation.
594
595@var{retval} is the return value.
596@end deffn
597
598@node Debugger options
c936bede 599@subsection Debugger options
a0e07ba4
NJ
600
601Here is the list of print options generated by typing
602@code{(debug-options 'full)} in Guile. You can also see the default
603values.
604
605@smallexample
606stack 20000 Stack size limit (0 = no check).
607debug yes Use the debugging evaluator.
608backtrace no Show backtrace on error.
609depth 20 Maximal length of printed backtrace.
610maxdepth 1000 Maximal number of stored backtrace frames.
611frames 3 Maximum number of tail-recursive frames in backtrace.
612indent 10 Maximal indentation in backtrace.
613backwards no Display backtrace in anti-chronological order.
614procnames yes Record procedure names at definition.
615trace no *Trace mode.
616breakpoints no *Check for breakpoints.
617cheap yes *Flyweight representation of the stack at traps.
618@end smallexample
619
c936bede 620@subsubsection Stack overflow
3db03338
NJ
621
622@cindex overflow, stack
623@cindex stack overflow
624Stack overflow errors are caused by a computation trying to use more
625stack space than has been enabled by the @code{stack} option. They are
626reported like this:
627
628@lisp
629(non-tail-recursive-factorial 500)
630@print{}
631ERROR: Stack overflow
632ABORT: (stack-overflow)
633@end lisp
634
635If you get an error like this, you can either try rewriting your code to
636use less stack space, or increase the maximum stack size. To increase
637the maximum stack size, use @code{debug-set!}, for example:
638
639@lisp
640(debug-set! stack 200000)
641@result{}
642(show-file-name #t stack 200000 debug backtrace depth 20 maxdepth 1000 frames 3 indent 10 width 79 procnames cheap)
643
644(non-tail-recursive-factorial 500)
645@result{}
646122013682599111006870123878542304692625357434@dots{}
647@end lisp
648
649If you prefer to try rewriting your code, you may be able to save stack
650space by making some of your procedures @dfn{tail recursive}. For a
651description of what this means, see @ref{Proper tail
652recursion,,,r5rs,The Revised^5 Report on Scheme}.
653
a0e07ba4
NJ
654
655@node Examples of option use
c936bede 656@subsection Examples of option use
a0e07ba4
NJ
657
658Here is an example of a session in which some read and debug option
659handling procedures are used. In this example, the user
660
661@enumerate
662@item
663Notices that the symbols @code{abc} and @code{aBc} are not the same
664@item
665Examines the @code{read-options}, and sees that @code{case-insensitive}
666is set to ``no''.
667@item
668Enables @code{case-insensitive}
669@item
670Verifies that now @code{aBc} and @code{abc} are the same
671@item
672Disables @code{case-insensitive} and enables debugging @code{backtrace}
673@item
674Reproduces the error of displaying @code{aBc} with backtracing enabled
675[FIXME: this last example is lame because there is no depth in the
676backtrace. Need to give a better example, possibly putting debugging
677option examples in a separate session.]
678@end enumerate
679
680
681@smalllisp
682guile> (define abc "hello")
683guile> abc
684"hello"
685guile> aBc
686ERROR: In expression aBc:
687ERROR: Unbound variable: aBc
688ABORT: (misc-error)
689
690Type "(backtrace)" to get more information.
691guile> (read-options 'help)
692keywords #f Style of keyword recognition: #f or 'prefix
693case-insensitive no Convert symbols to lower case.
694positions yes Record positions of source code expressions.
695copy no Copy source code expressions.
696guile> (debug-options 'help)
697stack 20000 Stack size limit (0 = no check).
698debug yes Use the debugging evaluator.
699backtrace no Show backtrace on error.
700depth 20 Maximal length of printed backtrace.
701maxdepth 1000 Maximal number of stored backtrace frames.
702frames 3 Maximum number of tail-recursive frames in backtrace.
703indent 10 Maximal indentation in backtrace.
704backwards no Display backtrace in anti-chronological order.
705procnames yes Record procedure names at definition.
706trace no *Trace mode.
707breakpoints no *Check for breakpoints.
708cheap yes *Flyweight representation of the stack at traps.
709guile> (read-enable 'case-insensitive)
710(keywords #f case-insensitive positions)
711guile> aBc
712"hello"
713guile> (read-disable 'case-insensitive)
714(keywords #f positions)
715guile> (debug-enable 'backtrace)
716(stack 20000 debug backtrace depth 20 maxdepth 1000 frames 3 indent 10 procnames cheap)
717guile> aBc
718
719Backtrace:
7200* aBc
721
722ERROR: In expression aBc:
723ERROR: Unbound variable: aBc
724ABORT: (misc-error)
725guile>
726@end smalllisp
727
728
a0e07ba4
NJ
729@c Local Variables:
730@c TeX-master: "guile.texi"
731@c End: