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