From 3c98caa84e4b73d6ee6c0c3ba2c6dd77eb5c8a93 Mon Sep 17 00:00:00 2001 From: Erick Gallesio Date: Thu, 30 Apr 1998 13:04:33 +0200 Subject: [PATCH] Commit of 3.99.1 version --- CHANGES | 27 +- ChangeLog | 83 +- Demos/Html-Demos/S-scape-en.html | 33 + Demos/Html-Demos/S-scape-fr.html | 4 +- Demos/Html-Demos/amib-en.html | 63 + Demos/Html-Demos/amib-fr.html | 2 +- Demos/Html-Demos/animate.stk | 2 +- Demos/Html-Demos/applet-en.html | 70 + Demos/Html-Demos/compo-en.html | 69 + Demos/Html-Demos/envdraw-en.html | 32 +- Demos/Html-Demos/envdraw-fr.html | 6 +- Demos/Html-Demos/intro-en.html | 34 + Demos/Html-Demos/main-en.html | 30 + Demos/Html-Demos/puzzle.stk | 2 +- Demos/Html-Demos/simple-en.html | 39 + Demos/Makefile | 14 +- Demos/browse.stk | 2 +- Demos/browse.stklos | 2 +- Demos/calc.stklos | 2 +- Demos/filebox.stklos | 2 +- Demos/term.stk | 2 +- Doc/Manual/Makefile | 5 +- Doc/Manual/change-image.n | 1 + Doc/Manual/find-image.n | 1 + Doc/Manual/free-image.n | 1 + Doc/Manual/links.stk | 21 - Doc/Manual/make-link.stk | 31 - Doc/Manual/repl-display-prompt.n | 45 + Doc/Manual/repl-display-result.n | 1 + Doc/Manual/report-error.n | 2 +- Doc/Manual/stk.1 | 6 +- Doc/Manual/stk.ps | 39 +- Doc/Reference/Appendix-B.tex | 80 +- Doc/Reference/Appendix-C.tex | 8 +- Doc/Reference/Appendix-E.tex | 56 +- Doc/Reference/Reference1.tex | 66 +- Doc/Reference/Reference2.tex | 60 +- Doc/Reference/manual.dvi | Bin 393552 -> 398548 bytes Doc/Reference/manual.ps | 15530 ++++++++-------- Doc/Reference/manual.tex | 7 +- Extensions/Makefile.in | 6 +- Extensions/jpeg.c | 2 +- Extensions/posix.c | 2 +- Help/BlueIndex.html | 28 +- Help/GreenIndex.html | 8 +- Help/Makefile | 4 +- Help/STk-hlp.html | 39 +- Help/YellowIndex.html | 4 +- Help/bitmap.n.html | 2 +- Help/button.n.html | 3 +- ...reate-image.n.html => change-image.n.html} | 22 +- Help/checkbutton.n.html | 54 +- Help/entry.n.html | 3 +- Help/find-image.n.html | 69 + Help/free-image.n.html | 69 + Help/image.n.html | 2 +- Help/jpeg.n.html | 2 +- Help/label.n.html | 3 +- Help/make-image.n.html | 69 + Help/make-link.stk | 35 - Help/menu.n.html | 5 +- Help/menubutton.n.html | 3 +- Help/photo.n.html | 2 +- Help/pixmap.n.html | 2 +- Help/repl-display-prompt.n.html | 33 + Help/repl-display-result.n.html | 33 + Help/report-error.n.html | 2 +- Help/stk.1.html | 15 +- Help/text.n.html | 395 +- INSTALL | 7 +- Lib/Makefile | 4 +- Lib/bigloo.stk | 24 +- Lib/init.stk | 4 +- Lib/match.stk | 6 +- Lib/menu.stk | 7 +- Lib/sterm.stk | 2 +- Lib/text.stk | 2 +- Lib/tk-init.stk | 2 +- Lib/tk-unix.stk | 2 +- Lib/trace.stk | 2 +- Lib/www-browser.stklos | 4 +- Lib/www-img.stk | 3 +- Lib/www.stk | 2 +- Makefile.in | 21 +- Mp/Makefile | 10 +- README | 4 +- STk.prj | 203 +- STklos/Examples/complex.stklos | 2 +- STklos/Makefile | 10 +- STklos/Tk/Basics.stklos | 17 +- STklos/Tk/Button.stklos | 12 +- STklos/Tk/Canvas.stklos | 2 +- STklos/Tk/Canvitem.stklos | 2 +- STklos/Tk/Composite/Balloon.stklos | 2 +- STklos/Tk/Composite/Choicebox.stklos | 6 +- STklos/Tk/Composite/Colorbox.stklos | 2 +- STklos/Tk/Composite/Defbutton.stklos | 2 +- STklos/Tk/Composite/Filebox.stklos | 2 +- STklos/Tk/Composite/Gauge.stklos | 2 +- STklos/Tk/Composite/Lentry.stklos | 2 +- STklos/Tk/Composite/Lframe.stklos | 2 +- STklos/Tk/Composite/Msgbox.stklos | 2 +- STklos/Tk/Composite/Multiwin.stklos | 2 +- STklos/Tk/Composite/Paned.stklos | 2 +- STklos/Tk/Composite/Scrollbox.stklos | 2 +- STklos/Tk/Composite/Scrollcanvas.stklos | 2 +- STklos/Tk/Composite/Scrolltext.stklos | 2 +- STklos/Tk/Entry.stklos | 11 +- STklos/Tk/Frame.stklos | 2 +- STklos/Tk/Listbox.stklos | 2 +- STklos/Tk/Menu.stklos | 2 +- STklos/Tk/Message.stklos | 2 +- STklos/Tk/Scale.stklos | 9 +- STklos/Tk/Scrollbar.stklos | 2 +- STklos/Tk/Text.stklos | 10 +- STklos/Tk/Tk-active.stklos | 2 +- STklos/Tk/Tk-classes.stklos | 7 +- STklos/Tk/Tk-meta.stklos | 2 +- STklos/Tk/Toplevel.stklos | 2 +- STklos/active-slot.stklos | 2 +- STklos/composite-slot.stklos | 2 +- STklos/stklos.stk | 18 +- STklos/trace-gf.stklos | 2 +- Src/Makefile.in | 18 +- Src/cont.c | 2 +- Src/dynload.c | 2 +- Src/env.c | 6 +- Src/error.c | 2 +- Src/eval.c | 2 +- Src/io.c | 4 +- Src/module.c | 11 +- Src/port.c | 10 +- Src/primitives.c | 2 +- Src/print.c | 2 +- Src/proc.c | 2 +- Src/read.c | 2 +- Src/signal.c | 2 +- Src/slib.c | 2 +- Src/stk.h | 6 +- Src/stklos.c | 6 +- Src/str.c | 2 +- Src/tcl-glue.c | 31 +- Src/tcl-obj.c | 4 +- Src/toplevel.c | 28 +- Src/unix.c | 7 +- Src/values.c | 2 +- Stack/README | 2 +- Stack/conftest.c | 3 - Tcl/Makefile.in | 10 +- Tcl/tclInt.h | 18 +- Tcl/tclUnixPort.h | 16 +- Tk/unix/Makefile.in | 11 +- Tk/unix/install-sh | 0 Utils/STk.spec | 81 + Utils/STk.spec.in | 81 + VERSION | 2 +- configure | 34 +- configure.in | 9 +- 158 files changed, 10002 insertions(+), 8279 deletions(-) create mode 100644 Demos/Html-Demos/S-scape-en.html create mode 100644 Demos/Html-Demos/amib-en.html create mode 100644 Demos/Html-Demos/applet-en.html create mode 100644 Demos/Html-Demos/compo-en.html create mode 100644 Demos/Html-Demos/intro-en.html create mode 100644 Demos/Html-Demos/main-en.html create mode 100644 Demos/Html-Demos/simple-en.html mode change 100644 => 100755 Demos/Makefile create mode 120000 Doc/Manual/change-image.n create mode 120000 Doc/Manual/find-image.n create mode 120000 Doc/Manual/free-image.n delete mode 100644 Doc/Manual/links.stk delete mode 100644 Doc/Manual/make-link.stk create mode 100644 Doc/Manual/repl-display-prompt.n create mode 120000 Doc/Manual/repl-display-result.n rename Help/{create-image.n.html => change-image.n.html} (77%) create mode 100644 Help/find-image.n.html create mode 100644 Help/free-image.n.html create mode 100644 Help/make-image.n.html delete mode 100644 Help/make-link.stk create mode 100644 Help/repl-display-prompt.n.html create mode 100644 Help/repl-display-result.n.html delete mode 100644 Stack/conftest.c mode change 100644 => 100755 Tk/unix/install-sh create mode 100644 Utils/STk.spec create mode 100644 Utils/STk.spec.in diff --git a/CHANGES b/CHANGES index f23f9d9..921a4e4 100644 --- a/CHANGES +++ b/CHANGES @@ -1,7 +1,22 @@ +04/27/98 Release 3.99.1 +----------------------- + +Mainly minor correction to 3.99.0 (installation problems principally) + +Otherwise: + * Inclusion of the Metaclass init-keywords patch from J-M Kubek + , which allows to initialize some slots of + a class when declaring it. + + * Tk widgets can be initailized at creation time, even if they + are disabled (idea from Walter C. Pelissero + + + 04/10/98 Release 3.99.0 ----------------------- -This is the pre-4.0 release. Why is is not calles 4.0? Good question. +This is the pre-4.0 release. Why is is not called 4.0? Good question. This version would have been numbered 4.0 if there was not a so long time between this release and the previous one. Since I take so long to release, I had time to add a lot of things to my "TODO list". @@ -16,7 +31,7 @@ Here are the main visible changes from previous release: * A module system has been added * Integration of the Bigloo MATCH-CASE and MATCH-LAMBDA - primitives. Furthermore, the file bigloo.stk provide + primitives. Furthermore, the file bigloo.stk provides some compatibility between STk and bigloo modules. * A simple FFI has been added. It allows to access C functions without writing C code (works only on a @@ -28,7 +43,7 @@ Here are the main visible changes from previous release: REPL are now user definable. * report-error mechanism has been enhanced a lot (work is not completely achieved). - * new-primitives: append!, mast-pair, C-string->string, + * new-primitives: append!, last-pair, C-string->string, remove-file, rename-file, temporary-file-name, ... * Numerous bug corrections * ... @@ -72,6 +87,12 @@ Here are the main visible changes from previous release: method-generic-function, method-specializers method-procedure, remove-method change-object-class + + * When a class is redefined, the instances and methods which uses it + are redefined accordingly, as in CLOS (i.e. if you add a slot in a + class, all its -- direct or indirect -- instances will have the new + slot added dynamically. + * New kind of slot allocation: "active". An active slot is a slot for which you can put a daemon before or after its reading/writing diff --git a/ChangeLog b/ChangeLog index 468df64..2f7a82e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,88 @@ +1998-04-30 Erick Gallesio + + * STk-3.99.1 Release + + * STklos/stklos.stk (ensure-class): Inclusion of the Metaclass + init-keywords patch from J-M kubek , which + allows to initialize some slots of a class when declaring it. + + * Lib/bigloo.stk (module): The compatibility function between + bigloo modules and STk modules was not updated to the current + version of modules. Bug signaled by J-M kubek + + * STklos/stklos.stk (shallow-clone): usage of + class-definition-name instead of slot-definition-name in *-clone + functions. Bug signaled by Walter C. Pelissero + + + * Tcl/tclUnixPort.h: + * Tcl/Int.h: Path correction for accessing compatibility + files. This was needed for SunOS 4.3.x. + + * Extensions/Makefile.in : Don't trap errors when linking to see + that there are problems (particularly for Solaris). + +1998-04-27 Erick Gallesio + + * Installation process has been updated. + + * STklos/Tk/Button.stklos: The variable associated to a radio + button or check button was not using the environment. + + * STklos/Tk/Text.stklos: + * STklos/Tk/Entry.stklos: + * STklos/Tk/Scale.stklos: + * STklos/Tk/Basic.stklos: New function: initialize-value-slot + which allow to initialize this slot even if the state of the + widget is disabled. Idea from Walter C. Pelissero + + + +1998-04-26 Erick Gallesio + + * Src/toplevel.c: Correction of a long standing bug which causes + background STk to take all the CPU in some circumstances. It was + hard to track + +1998-04-22 Erick Gallesio + + * Src/tcl-glue.c (STk_valid_environment): Various problems + corrected with the new :environment options which is available on + widgets now. + + * Src/port.c (STk_flush): Bug correction. Trying to flush a string + port was erroneous. Bug signalled by Walter C. Pelissero + + +Mon Apr 20 20:52:21 1998 Erick Gallesio + + * Doc/Manual/repl-display-prompt.n: New documentation file. + + * Doc/Reference/*: Documentation update. + +Mon Apr 13 12:24:19 1998 Erick Gallesio + + * Demos/Html-demos/*: Adding the English demos which were + accidentally forgotten from the previous release + + +Sun Apr 12 14:13:05 1998 Erick Gallesio + + * Help/*: Pages were not regenerated and correspond to an old + version. + + * configure.in : Various correction in the installation process + which was wrong. The spec file for RPM and the STk.prj are now + auto generated at configuration time + Fri Apr 10 09:01:17 1998 Erick Gallesio * STk-3.99.0 release Wed Apr 8 17:02:26 1998 Erick Gallesio - * Src/*.c: Correction: stderr (instead of STk_stderr) was incorrectly - used in some places. + * Src/*.c: Correction: stderr (instead of STk_stderr) was + incorrectly used in some places. * Src/Stack: Code was absolutely incorrect for machine which don't support FFI. @@ -215,7 +292,7 @@ Thu Jan 8 12:27:44 1998 Erick Gallesio Sat Jan 3 16:50:55 1998 Erick Gallesio - * STk.prj: STk.prj has been completely redefines. Now PRCS + * STk.prj: STk.prj has been completely redefined. Now PRCS versions are in sync with STk version. Thu Jan 1 13:18:22 1998 Erick Gallesio diff --git a/Demos/Html-Demos/S-scape-en.html b/Demos/Html-Demos/S-scape-en.html new file mode 100644 index 0000000..5f2bdd8 --- /dev/null +++ b/Demos/Html-Demos/S-scape-en.html @@ -0,0 +1,33 @@ + + + + S-scape: The STk Web Browser. + + + +

S-scape: The STk Web Browser.

+ + S-scape is a Web browser

+

+
+
+ Top +
+
Erick Gallesio
+ + +Last modified: Mon Apr 13 11:59:20 CEST 1998 + + + diff --git a/Demos/Html-Demos/S-scape-fr.html b/Demos/Html-Demos/S-scape-fr.html index 12cf910..7c4d2b5 100644 --- a/Demos/Html-Demos/S-scape-fr.html +++ b/Demos/Html-Demos/S-scape-fr.html @@ -19,7 +19,7 @@
  • Permet de définir des "applets" en Scheme

  • Permet la consultation de pages distantes (e.g. - http://kaolin.unice.fr/) + http://kaolin.unice.fr/STk/)
    @@ -28,7 +28,7 @@
    Erick Gallesio
    -Last modified: Mon Mar 9 21:41:18 CET 1998 +Last modified: Mon Apr 13 09:25:03 CEST 1998 diff --git a/Demos/Html-Demos/amib-en.html b/Demos/Html-Demos/amib-en.html new file mode 100644 index 0000000..e2d63e2 --- /dev/null +++ b/Demos/Html-Demos/amib-en.html @@ -0,0 +1,63 @@ + + + + Building Interfaces in STklos + + + + + + + +

    + AMIB: A + Mini + Interface + Builder

    + +
    + +
    +
      +

    + Objective: Building Graphical Interfaces interactively

    +

      +
    • Written in STklos

      +

    • Provides +
        +
      • Interactive building of GUI; +
      • Save/Restore of built interfaces.

        +

      +
    • Uses the STklos Meta Object Protocol

      +

    • Code +
        +
      • generic (adding a new widget just consists in adding a line in + the program) +
      • just a demo (less than 600 lines of code!!)

        +

      + +
    • Launch a Demo of AMIB with + +
    +
    + +
    + Top +
    +
    Erick Gallesio
    + + +Last modified: Mon Apr 13 12:00:21 CEST 1998 + + + diff --git a/Demos/Html-Demos/amib-fr.html b/Demos/Html-Demos/amib-fr.html index 23ded11..c466d5d 100644 --- a/Demos/Html-Demos/amib-fr.html +++ b/Demos/Html-Demos/amib-fr.html @@ -57,7 +57,7 @@
    Erick Gallesio
    -Last modified: Tue Mar 10 18:41:48 CET 1998 +Last modified: Mon Apr 13 09:58:25 CEST 1998 diff --git a/Demos/Html-Demos/animate.stk b/Demos/Html-Demos/animate.stk index 59907e7..2851d74 100644 --- a/Demos/Html-Demos/animate.stk +++ b/Demos/Html-Demos/animate.stk @@ -10,7 +10,7 @@ ;;;; permission of the copyright holder. ;;;; This software is provided ``as is'' without express or implied warranty. ;;;; -;;;; $Id: animate.stk 1.1 Tue, 10 Mar 1998 21:43:37 +0100 eg $ +;;;; $Id: animate.stk 1.1 Tue, 10 Mar 1998 20:43:37 +0000 eg $ ;;;; ;;;; Author: Erick Gallesio [eg@unice.fr] ;;;; Creation date: 9-Mar-1998 18:51 diff --git a/Demos/Html-Demos/applet-en.html b/Demos/Html-Demos/applet-en.html new file mode 100644 index 0000000..bd257fa --- /dev/null +++ b/Demos/Html-Demos/applet-en.html @@ -0,0 +1,70 @@ + + + + Applets in STk + + + +

    Applets in STk

    +

    + + + + + S-scape allows the insertion of STk-code in a HTML page. +

    Examples: +

      +
    • Animation: + +

      +

    • Piece of embedded interface: + +

      +

    • Embedded application: + +
    + + +
    + Top +
    +
    Erick Gallesio
    + + +Last modified: Tue Mar 10 21:37:14 CET 1998 + + + diff --git a/Demos/Html-Demos/compo-en.html b/Demos/Html-Demos/compo-en.html new file mode 100644 index 0000000..0222d21 --- /dev/null +++ b/Demos/Html-Demos/compo-en.html @@ -0,0 +1,69 @@ + + + + Composite Widgets + + + + + + +

    Composite Widgets

    + + A composite widget is made by assembling several widgets (simple + or even composite widgets): + + +
    +     (define le (make <Labeled-entry> :value 50 :title "Valeur:"))
    +    
    + + + defines le as an instance of the <Labeled-entry> + class. This object, on a screen, gives: +

    +

    +

    +

    +
    +
    +
    +    
    + In fact, this widget is composed if three Tk basic widgets: a + frame, a label an an entry: +
    +
    +    
    +
    + + +

    +

    + +
    +
    +    
    +
      +
    • A demonstration of some composite widgets can be launched from here with: +
        +
      • the non-installed version of STk + (test-stk) +
      • the installed version of STk + (stk)

        +

      +
    • The complete code of the <Labeled-entry> class is approximatively 60 lines. +
    +
    +
    + Retour +
    +
    Erick Gallesio
    + + +Last modified: Mon Apr 13 12:08:18 CEST 1998 + + + diff --git a/Demos/Html-Demos/envdraw-en.html b/Demos/Html-Demos/envdraw-en.html index 28bb808..3ad8bba 100644 --- a/Demos/Html-Demos/envdraw-en.html +++ b/Demos/Html-Demos/envdraw-en.html @@ -4,15 +4,27 @@ Envdraw - -

    Envdraw

    + +

    Envdraw

    + +
    + +
    +
    +
    +
    EnvDraw is a environment diagramming package which draws environment -diagrams as taught in Abelson and Sussman's _Structure and -Interpretation of Computer Languages_. It was written as an +diagrams as taught in Abelson and Sussman's Structure and +Interpretation of Computer Languages. + +

    +It was written as an instructional tool for the CS61A course at the University of -California at Berkeley. The environment diagrammer is a metacircular +California at Berkeley. +

    +The environment diagrammer is a metacircular evaluator which draws procedures, environments, and box and pointer diagrams along with all the accompanying symbols and mutation. It includes a box and pointer diagrammer which handles circular list @@ -20,6 +32,15 @@ structures, cons cell mutation, and also will watch for modification of any symbols known to be pointing to drawn cells. +

    +Envdraw can be downloaded from the following URL: +http://kaolin.unice.fr/STk/Contribs + +


    + Top +
    +
    Erick Gallesio
    +< @@ -28,6 +49,7 @@ of any symbols known to be pointing to drawn cells.
    Erick Gallesio
    +Last modified: Mon Apr 13 12:15:49 CEST 1998 diff --git a/Demos/Html-Demos/envdraw-fr.html b/Demos/Html-Demos/envdraw-fr.html index 0726cf5..d4f5271 100644 --- a/Demos/Html-Demos/envdraw-fr.html +++ b/Demos/Html-Demos/envdraw-fr.html @@ -24,7 +24,7 @@ d'environnement tels qu'il sont pr

    Cet outil a été écrit comme un outil pédagogique pour le cours CS61A de l'Université de Berkeley (Californie). - +

    Envdraw est en fait un interprète méta-circulaire capable de dessiner des procedures, des environnement ainsi que des listes sous forme de boîtes (les listes circulaire sont gérées) @@ -33,7 +33,7 @@ modifications apport

    Envdraw peut être récupéré à l'URL suivante: -http://kaolin.unice.fr/Contribs +http://kaolin.unice.fr/STk/Contribs


    Retour @@ -41,7 +41,7 @@ Envdraw peut
    Erick Gallesio
    -Last modified: Tue Mar 10 21:24:50 CET 1998 +Last modified: Mon Apr 13 12:11:34 CEST 1998 diff --git a/Demos/Html-Demos/intro-en.html b/Demos/Html-Demos/intro-en.html new file mode 100644 index 0000000..faa8079 --- /dev/null +++ b/Demos/Html-Demos/intro-en.html @@ -0,0 +1,34 @@ + + + + STk/STklos Introduction + + + +

    STk/STklos Introduction

    +

    + + STk is a Scheme interpreter which

    +

      +
    • is able to access the Tk graphical toolkit

      +

    • eases the constrution of GUI

      +

    + STklos is the Object extension of STk

    +

      +
    • gives access to the Tk toolit as a hierarchy of objets

      +

    • eases the Tk toolkit programming

      + + +

    + A simple example written in STklos +
    +
    + Top +
    +
    Erick Gallesio
    + + +Last modified: Mon Apr 13 12:16:54 CEST 1998 + + + diff --git a/Demos/Html-Demos/main-en.html b/Demos/Html-Demos/main-en.html new file mode 100644 index 0000000..d5724ac --- /dev/null +++ b/Demos/Html-Demos/main-en.html @@ -0,0 +1,30 @@ + + + + Presentation of STk + + + +

    Presentation of STk

    + + + +
    +
    Erick Gallesio
    + + +Last modified: Mon Apr 13 09:57:17 CEST 1998 + + + diff --git a/Demos/Html-Demos/puzzle.stk b/Demos/Html-Demos/puzzle.stk index b0d0df3..4332808 100644 --- a/Demos/Html-Demos/puzzle.stk +++ b/Demos/Html-Demos/puzzle.stk @@ -10,7 +10,7 @@ ;;;; permission of the copyright holder. ;;;; This software is provided ``as is'' without express or implied warranty. ;;;; -;;;; $Id: puzzle.stk 1.1 Tue, 10 Mar 1998 21:43:37 +0100 eg $ +;;;; $Id: puzzle.stk 1.1 Tue, 10 Mar 1998 20:43:37 +0000 eg $ ;;;; ;;;; Author: Erick Gallesio [eg@unice.fr] ;;;; Creation date: 9-Mar-1998 21:11 diff --git a/Demos/Html-Demos/simple-en.html b/Demos/Html-Demos/simple-en.html new file mode 100644 index 0000000..613ac5a --- /dev/null +++ b/Demos/Html-Demos/simple-en.html @@ -0,0 +1,39 @@ + + + + STklos Example + + + +

    STklos Example

    + + Launch an xterm to test this program with +
      +
    • the non-installed version of STk + (test-stk) +
    • the installed version of STk + (stk) +
    +
    +
    +      (require "Tk-classes")
    +      (define l (make <Button>
    +                      :text    "Hello, world"
    +                      :font    "10x20"
    +                      :command (lambda () (exit 0))))
    +      (pack l)
    +     
    + + Cut the 3 expressions above and Paste them in the xterm + window as soon as it appears. + +
    + Top +
    +
    Erick Gallesio
    + + +Last modified: Mon Apr 13 10:13:04 CEST 1998 + + + diff --git a/Demos/Makefile b/Demos/Makefile old mode 100644 new mode 100755 index c828174..7a014da --- a/Demos/Makefile +++ b/Demos/Makefile @@ -4,22 +4,30 @@ include ../config.make -DEMODIR=$(libdir)/demos +DEMODIR=$(libdir)/Demos what: @echo "Type make install to install demos" install: -if [ ! -d $(DEMODIR) ] ; then mkdir -p $(DEMODIR); fi - for i in *.stk *.stklos Widget/*.stklos ; \ + chmod 0755 $(DEMODIR) + for i in *.stk *.stklos Widget/*.stklos *.html; \ do \ j=`basename $$i`; \ sed -e 's=/usr/local/lib/stk=$(libdir)=' \ -e 's=/usr/local/bin=$(bindir)=' $$i > $(DEMODIR)/$$j;\ done - for i in *.stk *.stklos ; \ + for i in *.stk *.stklos *.html; \ do \ chmod 0755 $(DEMODIR)/`basename $$i`; \ done + mkdir $(DEMODIR)/Html-Demos; chmod 0755 $(DEMODIR)/Html-Demos + cp Html-Demos/*.html $(DEMODIR)/Html-Demos + chmod 0644 $(DEMODIR)/Html-Demos/*.html + mkdir $(DEMODIR)/Html-Demos/Images; chmod 0755 $(DEMODIR)/Html-Demos/Images + cp Html-Demos/Images/* $(DEMODIR)/Html-Demos/Images + chmod 0644 $(DEMODIR)/Html-Demos/Images/* + (cd $(DEMODIR)/Html-Demos; ln -s ../amib.stklos ../stklos-widgets .) install.libs: diff --git a/Demos/browse.stk b/Demos/browse.stk index bd45af6..a4da791 100755 --- a/Demos/browse.stk +++ b/Demos/browse.stk @@ -8,7 +8,7 @@ ;;;; double-clicking. ;;;; This is a new version of the demo which can be run before STk is installed ;;;; -;;;; $Id: browse.stk 1.2 Mon, 16 Feb 1998 08:28:39 +0100 eg $ +;;;; $Id: browse.stk 1.2 Mon, 16 Feb 1998 07:28:39 +0000 eg $ ;;;; ;;;; Author: Erick Gallesio [eg@unice.fr] ;;;; Creation date: 3-Aug-1993 17:33 diff --git a/Demos/browse.stklos b/Demos/browse.stklos index 3743fb3..7e73678 100755 --- a/Demos/browse.stklos +++ b/Demos/browse.stklos @@ -7,7 +7,7 @@ ;;;; directory and allows you to open files or subdirectories by ;;;; double-clicking. ;;;; -;;;; $Id: browse.stklos 1.2 Mon, 16 Feb 1998 08:28:39 +0100 eg $ +;;;; $Id: browse.stklos 1.2 Mon, 16 Feb 1998 07:28:39 +0000 eg $ ;;;; ;;;; Author: Erick Gallesio [eg@unice.fr] ;;;; Creation date: 3-Aug-1993 17:33 diff --git a/Demos/calc.stklos b/Demos/calc.stklos index 534621c..5281bfc 100755 --- a/Demos/calc.stklos +++ b/Demos/calc.stklos @@ -13,7 +13,7 @@ ;;;; permission of the copyright holder. ;;;; This software is provided ``as is'' without express or implied warranty. ;;;; -;;;; $Id: calc.stklos 1.2 Mon, 16 Feb 1998 08:28:39 +0100 eg $ +;;;; $Id: calc.stklos 1.2 Mon, 16 Feb 1998 07:28:39 +0000 eg $ ;;;; ;;;; Author: Erick Gallesio [eg@unice.fr] ;;;; Creation date: 6-Apr-1995 18:11 diff --git a/Demos/filebox.stklos b/Demos/filebox.stklos index b407232..13b35fe 100755 --- a/Demos/filebox.stklos +++ b/Demos/filebox.stklos @@ -16,7 +16,7 @@ ;;;; This software is a derivative work of other copyrighted softwares; the ;;;; copyright notices of these softwares are placed in the file COPYRIGHTS ;;;; -;;;; $Id: filebox.stklos 1.2 Mon, 16 Feb 1998 08:28:39 +0100 eg $ +;;;; $Id: filebox.stklos 1.2 Mon, 16 Feb 1998 07:28:39 +0000 eg $ ;;;; ;;;; Author: Erick Gallesio [eg@kaolin.unice.fr] ;;;; Creation date: 12-Jun-1994 11:24 diff --git a/Demos/term.stk b/Demos/term.stk index df62eb8..3869468 100755 --- a/Demos/term.stk +++ b/Demos/term.stk @@ -13,7 +13,7 @@ ;;;; permission of the copyright holder. ;;;; This software is provided ``as is'' without express or implied warranty. ;;;; -;;;; $Id: term.stk 1.2 Mon, 16 Feb 1998 08:28:39 +0100 eg $ +;;;; $Id: term.stk 1.2 Mon, 16 Feb 1998 07:28:39 +0000 eg $ ;;;; ;;;; Author: Erick Gallesio [eg@unice.fr] ;;;; Creation date: 7-Oct-1995 10:39 diff --git a/Doc/Manual/Makefile b/Doc/Manual/Makefile index 0228f73..b1754e3 100644 --- a/Doc/Manual/Makefile +++ b/Doc/Manual/Makefile @@ -10,7 +10,7 @@ # # Author: Erick Gallesio [eg@unice.fr] # Creation date: 21-Oct-1994 11:25 -# Last file update: 30-Oct-1996 12:00 +# Last file update: 20-Apr-1998 21:43 include ../../config.make @@ -61,11 +61,10 @@ install.man: for i in *.n ;do \ $(CP) $$i $(MANN_DIR)/stk_$$i; \ done - ../../Src/test-stk -no -file make-link $(MANN_DIR) +# ../../Src/test-stk -no -file make-link $(MANN_DIR) clean: rm -f *~ very-clean: clean rm -f *.ps - \ No newline at end of file diff --git a/Doc/Manual/change-image.n b/Doc/Manual/change-image.n new file mode 120000 index 0000000..1756d9e --- /dev/null +++ b/Doc/Manual/change-image.n @@ -0,0 +1 @@ +make-image.n \ No newline at end of file diff --git a/Doc/Manual/find-image.n b/Doc/Manual/find-image.n new file mode 120000 index 0000000..1756d9e --- /dev/null +++ b/Doc/Manual/find-image.n @@ -0,0 +1 @@ +make-image.n \ No newline at end of file diff --git a/Doc/Manual/free-image.n b/Doc/Manual/free-image.n new file mode 120000 index 0000000..1756d9e --- /dev/null +++ b/Doc/Manual/free-image.n @@ -0,0 +1 @@ +make-image.n \ No newline at end of file diff --git a/Doc/Manual/links.stk b/Doc/Manual/links.stk deleted file mode 100644 index c307545..0000000 --- a/Doc/Manual/links.stk +++ /dev/null @@ -1,21 +0,0 @@ -;;;; -;;;; This file contains data for make-link.stk. -;;;; -;;;; Copyright © 1996-1997 Erick Gallesio - I3S-CNRS/ESSI -;;;; -;;;; Permission to use, copy, and/or distribute this software and its -;;;; documentation for any purpose and without fee is hereby granted, provided -;;;; that both the above copyright notice and this permission notice appear in -;;;; all copies and derived works. Fees for distribution or use of this -;;;; software or derived works may only be charged with express written -;;;; permission of the copyright holder. -;;;; This software is provided ``as is'' without express or implied warranty. -;;;; -;;;; Author: Erick Gallesio [eg@unice.fr] -;;;; Creation date: 30-Oct-1996 11:27 -;;;; Last file update: 17-Sep-1997 22:01 -;;;; - -(define *links* '( - ("create-image" "find-image" "change-image" "delete-image") -)) diff --git a/Doc/Manual/make-link.stk b/Doc/Manual/make-link.stk deleted file mode 100644 index 000cf3a..0000000 --- a/Doc/Manual/make-link.stk +++ /dev/null @@ -1,31 +0,0 @@ -;;;; -;;;; This script is executed for linking manual pages which are identical -;;;; Data are taken in the "links.stk" file -;;;; -;;;; Copyright © 1996 Erick Gallesio - I3S-CNRS/ESSI -;;;; -;;;; Permission to use, copy, and/or distribute this software and its -;;;; documentation for any purpose and without fee is hereby granted, provided -;;;; that both the above copyright notice and this permission notice appear in -;;;; all copies and derived works. Fees for distribution or use of this -;;;; software or derived works may only be charged with express written -;;;; permission of the copyright holder. -;;;; This software is provided ``as is'' without express or implied warranty. -;;;; -;;;; Author: Erick Gallesio [eg@unice.fr] -;;;; Creation date: 30-Oct-1996 11:27 -;;;; Last file update: 30-Oct-1996 12:32 -;;;; - -(load "links.stk") - -(define (make-link dir source destination) - (for-each (lambda (x) - (let ((cmd (format #f "cd ~A; rm -f stk_~A.n; ln stk_~A.n stk_~A.n" - dir x source x))) - (system cmd))) - destination)) - -(for-each (lambda (l) (make-link (car *argv*) (car l) (cdr l))) - *links*) -(exit 0) diff --git a/Doc/Manual/repl-display-prompt.n b/Doc/Manual/repl-display-prompt.n new file mode 100644 index 0000000..16dc2ec --- /dev/null +++ b/Doc/Manual/repl-display-prompt.n @@ -0,0 +1,45 @@ +'\" Color=Green +'\" +'\" +.so STk-man.macros +.TH repl-display-prompt n 3.99 STk "STk procedure" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +repl-display-prompt, repl-display-result \- Display a prompt/result in +interactive mode +.SH SYNOPSIS +(\fBrepl-display-prompt \fImodule\fR) +.br +(\fBrepl-display-result \fIvalue\fR) +.BE + +.SH DESCRIPTION +.PP +\fBRepl-display-prompt\fR is called by the interactive toplevel loop +before reading a \fIsexpr\fR. This procedure is called with one parameter: +the selected module in the toplevel loop. +.LP +A simple form of this procedure could be: + +.CS +(define (repl-display-prompt module) + (let ((p (current-error-port))) + (format p "~A> " (module-name module)) + (flush p))) +.CE + + +.PP +\fBRepl-display-result\fR is called by the interactive toplevel loop +after the evaluation of a \fIsexpr\fR. This procedure is called with the +result of this evaluation as parameter. + +.LP +A simple form, mimicking the MIT Scheme way of presenting results, could be: + +.CS +(define (repl-display-result value) + (format #t "\\n;Value: ~S\\n\\n" value)) +.CE + diff --git a/Doc/Manual/repl-display-result.n b/Doc/Manual/repl-display-result.n new file mode 120000 index 0000000..30abdfa --- /dev/null +++ b/Doc/Manual/repl-display-result.n @@ -0,0 +1 @@ +repl-display-prompt.n \ No newline at end of file diff --git a/Doc/Manual/report-error.n b/Doc/Manual/report-error.n index c46c2e9..b0b5884 100644 --- a/Doc/Manual/report-error.n +++ b/Doc/Manual/report-error.n @@ -23,7 +23,7 @@ causes the error (or the empty list when there is no object to incriminate). The STk library includes a default \fBreport-error\fR procedure that posts a dialog box containing the error message and offers the user a chance to see a stack trace showing where the -error occurred and its associated environment.. +error occurred and its associated environment. .PP If an error occurs while is \fBreport-error\fR execution, the interpreter detect that the procedure is buggy and it redirect further diff --git a/Doc/Manual/stk.1 b/Doc/Manual/stk.1 index d0d534e..b45d402 100644 --- a/Doc/Manual/stk.1 +++ b/Doc/Manual/stk.1 @@ -21,7 +21,7 @@ '\" ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO '\" PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. '\" -'\" $Id: stk.1 1.1 Sat, 03 Jan 1998 13:46:25 +0100 eg $ +'\" $Id: stk.1 1.2 Mon, 20 Apr 1998 20:15:01 +0000 eg $ '\" .so STk-man.macros .TH STk 1 4.0 STk "January_1998" @@ -172,6 +172,10 @@ variable is a list of paths to try when in a load command. This variable serves to initialize the \fI*help-path*\fR Scheme variable. It must contain a list of documentation directories. This variable is used by the help procedure. +.IP "\fISTK_IMAGE_PATH\fR" 15 +This variable serves to initialize the \fI*image-path*\fR Scheme variable. It +must contain a list of images directories. This variable is used by the make-image +procedure. .SH FILES diff --git a/Doc/Manual/stk.ps b/Doc/Manual/stk.ps index aa44553..5dcf416 100644 --- a/Doc/Manual/stk.ps +++ b/Doc/Manual/stk.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.11 -%%CreationDate: Fri Apr 10 09:05:16 1998 +%%CreationDate: Mon Apr 20 10:54:40 1998 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -496,24 +496,29 @@ F .525(ariable is a list)-.25 F(of paths to try when in a load command.) BP %%EndPageSetup /F0 10/Times-Roman@0 SF 175.12(STk\(1\) January_1998 STk\(1\))72 48 R/F1 -9/Times-Bold@0 SF(FILES)72 84 Q/F2 10/Times-Italic@0 SF(./init.stk)108 -96 Q($STK_LIBRAR)108 112.8 Q(Y/STk/init.stk)-.18 E F0(When)183 124.8 Q -/F3 10/Times-Bold@0 SF(stk)2.69 E F0 .19 -(starts running, it tries to load the \214le)2.69 F F2(init.stk)2.69 E +10/Times-Italic@0 SF(STK_IMA)108 84 Q(GE_P)-.35 E -.37(AT)-.9 G(H).37 E +F0 .137(This v)183 96 R .137(ariable serv)-.25 F .137 +(es to initialize the)-.15 F F1(*ima)2.637 E -.1(ge)-.1 G(-path*).1 E F0 +.137(Scheme v)2.637 F .137(ariable. It must contain a list)-.25 F +(of images directories. This v)183 108 Q(ariable is used by the mak)-.25 +E(e-image procedure.)-.1 E/F2 9/Times-Bold@0 SF(FILES)72 148.8 Q F1 +(./init.stk)108 160.8 Q($STK_LIBRAR)108 177.6 Q(Y/STk/init.stk)-.18 E F0 +(When)183 189.6 Q/F3 10/Times-Bold@0 SF(stk)2.69 E F0 .19 +(starts running, it tries to load the \214le)2.69 F F1(init.stk)2.69 E F0 .19(in the current directory)2.69 F 2.69(.I)-.65 G 2.69(ft)-2.69 G -.19(his \214le)-2.69 F 1.581 -(is not present, it tries to load this \214le in the)183 136.8 R F3 -(STk_LIBRAR)4.082 E(Y)-.35 E F0 1.582(directory \(the v)4.082 F 1.582 -(alue of)-.25 F F3(STk_LIBRAR)183 148.8 Q(Y)-.35 E F0 .244(is automatic\ -ally computed to be in a sibling directory of the interpreter)2.745 F --.15(exe)183 160.8 S(cutable.).15 E F2(~/.stkr)108 189.6 Q(c)-.37 E F0 -(Standard)47.32 E F2(init.stk)2.979 E F0 .479 -(\214le tries to load the \214le)2.979 F F2(~/.stkr)2.979 E(c)-.37 E F0 -2.979(.T)C .48(his \214le can be used to store functions)-2.979 F .704 -(de\214nitions or v)183 201.6 R .704(ariables settings that you w)-.25 F +.19(his \214le)-2.69 F 1.582 +(is not present, it tries to load this \214le in the)183 201.6 R F3 +(STk_LIBRAR)4.081 E(Y)-.35 E F0 1.581(directory \(the v)4.081 F 1.581 +(alue of)-.25 F F3(STk_LIBRAR)183 213.6 Q(Y)-.35 E F0 .244(is automatic\ +ally computed to be in a sibling directory of the interpreter)2.744 F +-.15(exe)183 225.6 S(cutable.).15 E F1(~/.stkr)108 254.4 Q(c)-.37 E F0 +(Standard)47.32 E F1(init.stk)2.98 E F0 .48 +(\214le tries to load the \214le)2.98 F F1(~/.stkr)2.979 E(c)-.37 E F0 +2.979(.T)C .479(his \214le can be used to store functions)-2.979 F .703 +(de\214nitions or v)183 266.4 R .704(ariables settings that you w)-.25 F .704(ant to be e)-.1 F -.15(xe)-.15 G .704(cuted at each interpreter in) -.15 F -.2(vo)-.4 G(ca-).2 E(tion.)183 213.6 Q F1(SEE ALSO)72 242.4 Q F0 -(wish\(1\))108 254.4 Q 208.58(STk 4.0)72 768 R(3)222.75 E EP +.15 F -.2(vo)-.4 G(ca-).2 E(tion.)183 278.4 Q F2(SEE ALSO)72 307.2 Q F0 +(wish\(1\))108 319.2 Q 208.58(STk 4.0)72 768 R(3)222.75 E EP %%Trailer end %%EOF diff --git a/Doc/Reference/Appendix-B.tex b/Doc/Reference/Appendix-B.tex index f42ab1e..8413cd9 100644 --- a/Doc/Reference/Appendix-B.tex +++ b/Doc/Reference/Appendix-B.tex @@ -3,7 +3,7 @@ % % Author: Erick Gallesio [eg@unice.fr] % Creation date: ??-Nov-1993 ??:?? -% Last file update: 8-Jul-1996 21:52 +% Last file update: 20-Apr-1998 11:54 % \newcommand{\schglob}[1]{*#1*} @@ -16,7 +16,8 @@ implementation and the language described in {\rrrr}. {\stk} symbol syntax has been augmented to allow case significant symbols. This extension is discussed in \ref{symbolsection}. -The following symbols are defined in the global environment. +\smallskip {\stk} also defines some symbols in the global environment +which are described below: \begin{itemize} @@ -34,7 +35,7 @@ The following symbols are defined in the global environment. each loaded file is printed before its effective reading. File names are printed on the standard error stream. - \item {\tt\schglob{load-path}}\schindex{\schglob{load-path}} must +\item {\tt\schglob{load-path}}\schindex{\schglob{load-path}} must contain a list of strings. Each string is taken as a directory path name in which a file will be searched for loading. This variable can be set automatically from the {\tt STK\_LOAD\_PATH} @@ -47,13 +48,7 @@ The following symbols are defined in the global environment. file does not exist, the system will sequentially try to find the file by appending each suffix of this list. A typical value for this variable may be {\tt ("stk" "stklos" "scm" "so")}. - - \item {\tt\schglob{help-path}}\schindex{help, - getting}\schindex{\schglob{help-path}} must contain a list of - strings. Each string is taken as a directory path name in which - documentation files are searched. This variable can be set - automatically from the {\tt STK\_HELP\_PATH} shell variable. See - {\tt stk(1)} for more details. + \item {\tt\schglob{argc}}\schindex{\schglob{argc}} contains the number of arguments (0 if none), not including interpreter @@ -70,14 +65,77 @@ The following symbols are defined in the global environment. See {\tt stk(1)} for more details. \item {\tt\schglob{print-banner}}\schindex{\schglob{print-banner}}. If - {\tt\schglob{print-verbose}} is {\schfalse}, the usual copyright + {\tt\schglob{print-banner}} is {\schfalse}, the usual copyright message is not displayed when the interpreter is started. +\item {\tt\schglob{stk-library}}\schindex{\schglob{stk-library}} + contains the path name of the installation directory of the + {\stk} library. This variable can be set automatically from the + {\tt STK\_LIBRARY} shell variable. See {\tt stk(1)} for more + details. + +\end{itemize} + +The following symbols are defined only when Tk is loaded: + +\begin{itemize} + \item {\tt\schglob{root}}\schindex{\schglob{root}} designates the Tk main window (see~A-\ref{root window}). This variable is not set if the Tk toolkit is not initialized. + +\item {\tt\schglob{help-path}}\schindex{help, + getting}\schindex{\schglob{help-path}} must contain a list of + strings. Each string is taken as a directory path name in which + documentation files are searched. This variable can be set + automatically from the {\tt STK\_HELP\_PATH} shell variable. See + {\tt stk(1)} for more details. + +\item {\tt\schglob{image-path}}\schindex{\schglob{image-path}} must contain + a list of strings. Each string is taken as a directory path name in which + images are searched by the function \texttt{make-image}. This variable can be + set automatically from the {\tt STK\_IMAGE\_PATH} shell variable. See + {\tt stk(1)} and {\tt make-image(n)} for more details. + +\item {\tt\schglob{root}}\schindex{\schglob{root}} designates the Tk main + window (see~A-\ref{root window}). This variable is not set if + the Tk toolkit is not initialized. + +\item {\tt\schglob{start-withdrawn}}\schindex{\schglob{start-withdrawn}}. If + \schglob{start-withdrawn} is not false, the \schglob{root} window + is not mapped on screen until its first sub-window is packed or some + action is asked to the window manager for it. + +\item {\tt\schglob{tk-version}}\schindex{\schglob{tk-version}} is a string + which contains the version number of the Tk toolkit used by {\stk}. + +\item {\tt\schglob{tk-patch-level}}\schindex{\schglob{tk-patch-level}} is + a string which contains the version and patch level of the Tk toolkit + used by {\stk}. + \end{itemize} +Furthermore, {\stk} also defines the following procedures in the global +environment: + +\begin{itemize} +\item \ide{report-error}. This procedure is called by the error system to + display the message error. This procedure is described in + {\tt report-error(n)} + +\item \ide{repl-display-prompt}. \label{repl-display-prompt} + This procedure is called when the system + is run interactively before reading a \emph{sexpr} to evaluate to display + a prompt. This procedure is described in {\tt repl-display-prompt(n)}. + +\item \ide{repl-display-result}. This procedure is called when the system + is run interactively after the evaluation of a \emph{sexpr} to write the + result. This procedure is described in {\tt repl-display-result(n)}. + +\end{itemize} + + + \section{Types} {\stk} implements all the types defined as mandatory in {\rrrr}. However, complex diff --git a/Doc/Reference/Appendix-C.tex b/Doc/Reference/Appendix-C.tex index ffe2636..74dbe48 100644 --- a/Doc/Reference/Appendix-C.tex +++ b/Doc/Reference/Appendix-C.tex @@ -3,7 +3,7 @@ % % Author: Erick Gallesio [eg@unice.fr] % Creation date: 22-May-1994 22:13 -% Last file update: 21-Jan-1996 17:35 +% Last file update: 22-Apr-1998 11:04 % \section{Introduction} @@ -388,8 +388,8 @@ So: These rules are used to compute a linear order for a class and all its superclasses, from most specific to least specific. This order is called the -``class precedence list'' of the class. Given those two rules, we can claim -that the initial form for the {\tt x} slot of previous example is 2 since the +``class precedence list'' of the class. Given these two rules, we can claim +that the initial form for the {\tt x} slot of previous example is 1 since the class {\tt X} is placed before {\tt Y} in class precedence list of {\tt Z}. This two rules are not always enough to determine a unique order, however, but @@ -517,7 +517,7 @@ the list of applicable methods. This is done by using the special form \begin{scheme} (define-method Test((a )) (cons 'integer (next-method))) (define-method Test((a )) (cons 'number (next-method))) -(define-method Test(a) (list 'top)) +(define-method Test(a) (list 'top)) \end{scheme} With those definitions, diff --git a/Doc/Reference/Appendix-E.tex b/Doc/Reference/Appendix-E.tex index 174b94b..0a251ec 100644 --- a/Doc/Reference/Appendix-E.tex +++ b/Doc/Reference/Appendix-E.tex @@ -3,7 +3,7 @@ % % Author: Erick Gallesio [eg@unice.fr] % Creation date: 21-Dec-1997 20:09 -% Last file update: 21-Dec-1997 21:56 +% Last file update: 18-Apr-1998 13:36 % \section*{Introduction} @@ -11,11 +11,63 @@ This appendix lists the main differences\footnote{ Only the differences which affect the language or new ports are reported here. In particular, internal changes, packages written in Scheme or - performance enhancement are not discussed here.}.among the various + performance enhancement are not discussed here.} among the various recent versions of STk. Differences with older versions as well as implementation changes are described in the CHANGES file located in the main directory of the STk distribution. +\section*{Release 3.99.0} +\small{\emph{Release date: 04/10/98}} + +Changes can be classified in three categories: +\begin{itemize} +\item About Scheme + \begin{itemize} + \item A module system has been added + + \item Integration of the Bigloo \ide{match-case} and + \ide{match-lambda} primitives. Furthermore, the file \emph{bigloo.stk} + provides some compatibility between {\stk} and bigloo modules. + + \item A simple Foreign Function Interface has been added. + + \item integrates the {\rfive} \ide{values} and \ide{call-with-values} + + \item multi-line comments have been added. + + \item new file primitives: \texttt{remove-file}, \texttt{rename-file} and + \texttt{temporary-file-name}. + + \item new list primitives: \texttt{append!}, \texttt{last-pair}, + \texttt{remq}, \texttt{remv} and \texttt{remove}. + + \item \texttt{load}, \texttt{try-load} and \texttt{autoload?} can nw + be called with a module as second parameter. If this second parameter is + present, the loading is done in the environment of the given module. + \end{itemize} + +\item About Tk + \begin{itemize} + \item Integration of the Tk8.0 toolkit + \item Buttons, Checkbuttons and Radiobuttons can use a + \texttt{:variable} and \texttt{:textvariable} in a given + environment. This environment is given with the new \texttt{:environment} + option. + \end{itemize} + +\item About STklos + \begin{itemize} + \item The MOP of {\stklos} is now very similar to the CLOS's MOP. In + particular generic function has been added for controlling slot + accesses, as well as numerous introspection functions. + \item When a class is redefined, the instances and methods which uses it + are redefined accordingly, as in CLOS (i.e. if anew slot is added in a + class, all its -- direct or indirect -- instances will have the new + slot added dynamically. + \end{itemize} +\end{itemize} + + \section*{Release 3.1.1} \small{\emph{Release date: 09/26/96}} diff --git a/Doc/Reference/Reference1.tex b/Doc/Reference/Reference1.tex index 0cd2280..c947af9 100644 --- a/Doc/Reference/Reference1.tex +++ b/Doc/Reference/Reference1.tex @@ -3,7 +3,7 @@ % % Author: Erick Gallesio [eg@unice.fr] % Creation date: ??-Nov-1993 ??:?? -% Last file update: 16-Dec-1997 19:09 +% Last file update: 18-Apr-1998 14:47 % \section*{Introduction} @@ -55,7 +55,7 @@ There are three types of comments in {\stk}: \begin{enumerate} \item a semicolon (;) indicates the start of a comment. This kind of comment extends to the end of the line (as described in \rrrr). -\item multi-lines comment use the classical lisp conventions: a comment +\item multi-lines comment use the classical Lisp convention: a comment begins with \verb+#|+ and ends with \verb+|#+. \item comments can also be introduced by \sharpsign$!$. This extension is particularly useful for building {\stk} scripts. On most @@ -88,14 +88,13 @@ This kind of comment extends to the end of the line (as described in \rrrr). \item[\tt\sharpsign.] is read as the evaluation of the Scheme expression {\tt }. The evaluation is done during the \ide{read} process, when the \var{\sharpsign.} is encountered. - Evaluation is done in the global environment. + Evaluation is done in the environment of the current module. \begin{scheme} (define foo 1) \sharpsign.foo \lev 1 '(foo \sharpsign.foo \sharpsign.(+ foo foo)) \lev (foo 1 2) (let ((foo 2)) \sharpsign.foo) \lev 1 - \end{scheme} \end{description} @@ -353,7 +352,30 @@ keywords into account. On keywords, \ide{eq?} behaves like \ide{eqv?}. \proto{list?}{ obj}{procedure} \proto{list}{ \var{obj} \dotsfoo}{procedure} \proto{length}{ list}{procedure} -\proto{append}{ list \dotsfoo}{procedure} +\proto{append}{ list \dotsfoo}{procedure}} +\saut +\doc +\end{entry} + +\begin{entry}{% +\proto{append!}{ list \ldots}{procedure}} +\saut + +Returns a list consisting of the elements of the first \var{list} +followed by the elements of the other lists, as with \texttt{append}. +The differenece with \texttt{append} is that the arguments are {\em + changed} rather than {\em copied}. +\begin{scheme} + (append! '(1 2) '(3 4) '(5 6)) \lev '(1 2 3 4 5 6) + (let ((l1 '(1 2)) + (l2 '(3 4)) + (l3 '(5 6))) + (append! l1 l2 l3) + (list l1 l2 l3)) \lev ((1 2 3 4 5 6) (3 4 5 6) (5 6)) +\end{scheme} +\end{entry} + +\begin{entry}{% \proto{reverse}{ list}{procedure} \proto{list-tail}{ list \vr{k}}{procedure} \proto{list-ref}{ list \vr{k}}{procedure} @@ -387,6 +409,17 @@ have been deleted. The predicate used to test the presence of \var{obj} in \end{scheme} \end{entry} +\begin{entry}{% +\proto{last-pair}{ list}{procedure}} +\saut +Returns the last pair of \var{list}\footnote{\ide{Last-pair} was a standard +procedure in {\rthree}.}. +\begin{scheme} +(last-pair '(1 2 3)) \lev 3 +(last-pair '(1 2 . 3)) \lev (2 . 3) +\end{scheme} +\end{entry} + \begin{entry}{% \proto{list*}{ obj}{procedure}} \saut @@ -1275,15 +1308,11 @@ undefined. Otherwise, it returns the handler currently associated to \begin{entry}{% \proto{load}{ filename}{procedure} -\proto{load}{ filename environment}{procedure}} +\proto{load}{ filename module}{procedure}} \saut The first form is identical to \rrrr{}. The second one loads the -content of \var{filename} in the given \var{environment}. So, the first -form is equivalent to -\begin{scheme} -(load filename (global-environment)) -\end{scheme} +content of \var{filename} in the given \var{module} environment. \begin{note} The \var{load} primitive has been extended to allow loading of object files, though this is not implemented on all systems. @@ -1296,13 +1325,13 @@ form is equivalent to \begin{entry}{% \proto{try-load}{ filename}{procedure} -\proto{try-load}{ filename environment}{procedure}} +\proto{try-load}{ filename module}{procedure}} \saut Tries to load the file named \var{filename}. If \var{filename} exists and is readable, it is loaded, and \ide{try-load} returns {\schtrue}. Otherwise, the result of the call is {\schfalse}. The second form of \var{try-load} tries to load the content of \var{filename} -in the given \var{environment}. +in the given \var{module} environment. \end{entry} \begin{entry}{% @@ -1310,16 +1339,17 @@ in the given \var{environment}. \saut Defines \hyper{symbol}s as autoload symbols associated to file \var{filename}. -Fisrt evaluation of an autoload symbol will cause the loading of its -associated file. \var{Filename} must provide a definition for the symbol which +First evaluation of an autoload symbol will cause the loading of its +associated file in the module environment in which the autoload was done. +\var{Filename} must provide a definition for the symbol which lead to its loading, otherwise an error is signaled. \end{entry} \begin{entry}{% -\proto{autoload?}{ symbol}{procedure}} +\proto{autoload?}{ symbol module}{procedure}} \saut -Returns {\schtrue} if \var{symbol} is an autoload symbol; returns {\schfalse} -otherwise. +Returns {\schtrue} if \var{symbol} is an autoload symbol in \var{module} +environment ; returns {\schfalse} otherwise. \end{entry} \begin{entry}{% diff --git a/Doc/Reference/Reference2.tex b/Doc/Reference/Reference2.tex index 7bba9b7..87c7bb3 100644 --- a/Doc/Reference/Reference2.tex +++ b/Doc/Reference/Reference2.tex @@ -3,7 +3,7 @@ % % Author: Erick Gallesio [eg@unice.fr] % Creation date: ??-Nov-1993 ??:?? -% Last file update: 6-Apr-1998 11:25 +% Last file update: 20-Apr-1998 11:58 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -342,11 +342,11 @@ they are automatically exported. \end{entry} \begin{entry}{% -\proto{with-module}{ module \hyperi{expr} \hyperii{expr} \ldots} {syntax}} +\proto{with-module}{ name \hyperi{expr} \hyperii{expr} \ldots} {syntax}} \saut Evaluates the expressions of \hyperi{expr} \hyperii{expr} \ldots in -the \var{module} environment. \var{Module} must have been created +the environment of module \var{name}. Module \var{name} must have been created previously by a \ide{define-module}. The result of \ide{with-module} is the result of the evaluation of the last \hyper{expr}. @@ -376,6 +376,34 @@ Returns the current-module. \end{scheme} \end{entry} +\begin{entry}{% +\proto{select-module}{ name} {syntax}} +\saut + +Evaluates the expressions which follows in module \var{name} +environment. Module \var{name} must have been created previously by a +\ide{define-module}. The result of \ide{select-module} is undefined. +\ide{Select-module} is particularly useful when debugging since it +allows to place toplevel evaluation in a particular module. The +following transcript shows an usage of +\ide{select-module}\footnote{This transcript uses the default value for the + function \texttt{repl-display-prompt} (see page \pageref{repl-display-prompt}) + which displays the name of the current module in the prompt.}: + +\begin{scheme} +STk> (define foo 1) +STk> (define-module bar + (define foo 2)) +STk> foo +1 +STk> (select-module bar) +bar> foo +2 +bar> (select-module STk) +STk> +\end{scheme} +\end{entry} + \begin{entry}{% \proto{module-name}{ module} {procedure}} \saut @@ -691,9 +719,6 @@ which does not exist). \proto{glob}{ \vri{pattern} \vrii{pattern} \dotsfoo} {procedure}} \saut -%%%%%%%%%%%%%% Irgendwann h"alt Gott seine Arme auf: -%%%%%%%%%%%%%% BIS HIERHIN UND NICHT WEITER! - The code for \ide{glob} is taken from the Tcl library. It performs file name ``globbing'' in a fashion similar to the csh shell. \ide{Glob} returns a list of the filenames that match at least one of @@ -727,6 +752,29 @@ check for existence is made unless a pattern contains a ?, \etoile, or construct. \end{entry} +\begin{entry}{% +\proto{remove-file}{ string} {procedure}} +\saut +Removes the file whose path name is given in \var{string}. +The result of \ide{remove-file} is undefined. +\end{entry} + +\begin{entry}{% +\proto{rename-file}{ \vri{string} \vrii{string}} {procedure}} +\saut +Renames the file whose path-name is contained in \vri{string} in the path +name given by \vrii{string}. The result of \ide{rename-file} is undefined. +\end{entry} + +\begin{entry}{% +\proto{temporary-file-name}{ string} {procedure}} +\saut + +Generates a unique temporary file name. The value returned by +\ide{temporary-file-name} is the newly generated name of {\schfalse} +if a unique name cannot be generated. +\end{entry} + \begin{entry}{% \proto{getcwd}{} {procedure}} \saut diff --git a/Doc/Reference/manual.dvi b/Doc/Reference/manual.dvi index 601f2947178004fc485b29c7ff67ae92a95d81ee..cf00bcb7f1f1fc3ec504d081e461cf870d5e805d 100644 GIT binary patch literal 398548 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Ð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 literal 393552 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 Rq)!;LeKAj|VxR!4 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 z z%;DkEMZM$2?SJirXlL{n+s)7uZ?dh4&8FWi=WyG{1U&cFMvTf*M2>9hV5=Y9F__dXP&r^^!?8pnyfmDi+J>K(z)^Tl*B!HduR zacJEpUcA~C9qwB$_}8_+5d0K3-f-fan?HHOD(`WOHJvBU<_{It$PdrrXQ>YXEMC}~ z`O|a%>|n_XR$sKX?PI}bITLu+&#iiBXmjvWAmfG;;cNfpy%XN2{ICrt&Un7?(Ed;u V;G@3;nZDOTD}Hiy^NaZN{{Y>3g2?~? diff --git a/Doc/Reference/manual.ps b/Doc/Reference/manual.ps index c2b192e..ded079e 100644 --- a/Doc/Reference/manual.ps +++ b/Doc/Reference/manual.ps @@ -1,14 +1,14 @@ %!PS-Adobe-2.0 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software %%Title: manual.dvi -%%Pages: 90 +%%Pages: 105 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentPaperSizes: A4 %%EndComments %DVIPSCommandLine: dvips -t a4 -f manual.dvi %DVIPSParameters: dpi=300, comments removed -%DVIPSSource: TeX output 1998.04.10:0942 +%DVIPSSource: TeX output 1998.04.20:1201 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 @@ -451,230 +451,311 @@ FFFC00007FFFFE00001FFFFF000001FFFF8000001FFFC0000000FFE00000003FE0000000 0FF000000007F000000003F000000001F860000001F8E0000000F8E0000000F8E0000000 F8E0000000F8F0000000F8F0000000F0F0000000F0F8000001F0FC000001E0FC000003C0 FF000007C0FF80000F80FBE0001F00F1FE00FE00E07FFFF800E01FFFE000C001FF800025 -377BB52F>115 D E /Ff 14 118 df<78FCFCFCFC78000000000078FCFCFCFC7806117D -900C>58 D<1FF0303C701EF81FF81FF81F703E007C00F000C00180018003000300030003 -00000000000000000007800FC00FC00FC00FC00780101A7E9915>63 -D<1FF000383C007C1E007C0F007C0F00380F00000F0000FF000FCF003E0F007C0F00F80F -00F80F00F80F00F817007C27E01FC3E013117F9015>97 D -I<03FC000F0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F800007800 -007800003C01801C03000F060003FC0011117F9014>I<0007E00007E00001E00001E000 -01E00001E00001E00001E00001E003F9E00F07E01C03E03C01E07801E07801E0F801E0F8 -01E0F801E0F801E0F801E07801E07801E03C01E01C03E00F0DF803F9F8151A7F9919>I< -03F0000E1C001C0E003C0700780700780780F80780F80780FFFF80F80000F80000780000 -7800003C01801C03000E060003FC0011117F9014>I<07F1C01C1EE0380EE0780FC0780F -00780F00780F00780F00380E001C1C0037F0002000003000003000003FFE001FFF801FFF -C07003C0E000E0E000E0E000E0E000E07001C03C078007FC0013197F9016>103 -D107 D109 DI<03F8000E0E003C07803803807803C07803C0F803E0F803E0F803E0F803 -E0F803E0F803E07803C07C07C03C07800E0E0003F80013117F9016>I114 -D117 D E /Fg -2 111 df<040C0000000000305898983030606464683006127E910B>105 -D<71F09A189C18981818183030303030323062606460380F0B7E8A13>110 -D E /Fh 3 108 df<0F88305860384018C008C008C008E00070007F003FE01FF003F800 -38001C000C800C800C800CC008E018D83087C00E177E9614>83 D<7FFFF8603818403808 -403808803804803804803804003800003800003800003800003800003800003800003800 -00380000380000380000380000380000380000380007FFC016177F961A>I107 D E /Fi 19 122 df<000C001C007000E001 -C0038007000E000C001C003800380030007000700070006000E000E000E0006000700070 -003000380018000C00060002000E1D779914>40 D<0100018000C0006000700030003800 -38003800380038003800380038003800380070007000E000E001C00180038007000E001C -007000E00080000D1D7D9914>I<0C1E3E1E1C00000000000070F0F8F0600710778F14> -58 D<030007800F800780070000000000000000000000000018003C003E003C001C000C -0018003000E000C0000915798F14>I<03980FFC1C78387830787078E070E070E070E070 -E0EEE0EEE1EE63EC7F7C1C380F107B8F14>97 D<03E007F00E381838383870006000E000 -E000E000E000E000E01070783FF81FE00D107A8F14>99 D<003E003E000E000E000E001C -001C039C0FFC1C78387830787078E070E070E070E070E0EEE0EEE1EE63EC7F7C1C380F17 -7B9614>I<03E007F81E1C381C301C7038E0F8FFE0FF80E000E000E000E01070783FF81F -E00E107A8F14>I<00F30003FB80070F000E0F000C0F001C0F00380E00380E00380E0038 -0E00381C00381C00383C00187C000FF80007B800003800003800007000007000C0E000E1 -C000FF80007E000011187C8F14>103 D<004000E00040000000000000000000000E003F -007380E380E380E780070007000E000E001E701C701C701CE00FC007000C187A9714> -105 D108 D<0DE3C00FF7E01F3E701E3C701E3C -701C38703C78E03870E03870E03871C070E1C070E1C070E18070E180E1C1C060C0C01410 -7E8F14>I<30F879FCFF8EFE0EFE0EFC0E3C1C381C381C3838703F703F70777076E03E60 -1C10107C8F14>I<03E007F00E38181C381C701C601CE01CE01CE018E038E070E06071C0 -3F801F000E107B8F14>I<070E000FBF800DF1801DE1C01DC1C01DC1C00381C00381C003 -81C00381C0078380078300078700078E000FFC000E70000E00000E00001C00001C00001C -00001C0000FF0000FF000012187F8F14>I<387E007CFF00EF8380EF0380EF0100EE0000 -1E00001C00001C00001C000038000038000038000038000070000030000011107B8F14> -114 D<01F807FC0C0E180E18041C000FC007F001F8001C000CE00CE00CE0387FF01FC00F -107C8F14>I<0180038003800380038007000700FFE0FFE00E000E000E000E001C001C00 -1C001C003870387038E038C01F800F000C177A9614>I<1C03003E0380770700E70700EE -0700EE07000E0E001C0E001C0E001C0E00381C00381C00183C001C7C000FF80007B80000 -380000300000700070E00070C0007380003F00001E000011187C8F14>121 -D E /Fj 6 116 df<07E100181B00200700600300C00300C00100C00100C00100E00000 +377BB52F>115 D E /Ff 15 124 df<78FCFCFCFC7800000000000078FCFCFCFC780612 +7D910D>58 D<0FF0303C601EF01FF81FF81F701F003E003C007000E001C0018001800300 +0300030003000300000000000000000007800FC00FC00FC00FC00780101D7D9C17>63 +D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07 +C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 DI<03FC000E0E001C1F003C1F00781F00780E00F80000F800 +00F80000F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115 +>I<000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001 +F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F078 +01F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<03FC000F07001C03803C01C0 +7801C07801E0F801E0F801E0FFFFE0F80000F80000F800007800007800603C00601E00C0 +0F038001FC0013127F9116>I<03F0F00E1F383C0F383807307807807807807807807807 +803807003C0F001E1C0033F0003000003000003000003FFF003FFFC01FFFE01FFFF07801 +F8F00078F00078F000787000707800F01E03C007FF00151B7F9118>103 +D107 D109 DI<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F8 +00F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I114 D117 D123 D E /Fg 2 +111 df<06070600000000384C4C8C98181830323264643808147F930C>105 +D<30F8590C4E0C9C0C980C180C180C30183019303130316032601C100D7F8C15>110 +D E /Fh 3 108 df<07E100181B00200700600300C00300C00100C00100C00100E00000 7000007E00003FE0001FFC0003FE00003F00000700000380000380800180800180800180 C00100C00300E00200DC0C0083F000111A7D9917>83 D<7FFFFF00701C0700401C010040 1C0100C01C0180801C0080801C0080801C0080001C0000001C0000001C0000001C000000 1C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C000000 1C0000001C0000001C0000001C000003FFE000191A7E991D>I107 DI<03F8000E0E001C07003803807001C07001C06000C0E000E0 -E000E0E000E0E000E0E000E0E000E07001C07001C03803801C07000E0E0003F80013137E -9218>111 D<1F9020704030C010C010C000E0007C007F803FC007E00070007000308030 -8030C020E0409F800C137E9211>115 D E /Fk 16 119 df<00000600001E0000780001 -E0000780001E0000380000E00003C0000F00003C0000F00000F000003C00000F000003C0 -0000E000003800001E000007800001E000007800001E00000617187D941E>60 -D62 D<000010000000300000007000000070000000F8000000B800000138 -00000238000002380000043800000C38000008380000103C0000101C0000201C0000401C -00007FFC0000801C0000801C0001001C0002001C0002000E0004000E000C000E001C000E -00FF00FFC01A1A7F991D>65 D<03FFFC000070070000700380007003C000E003C000E003 -C000E003C000E003C001C0078001C00F0001C01E0001C03C0003FFF80003803C0003801E -0003800F0007000F0007000F0007000F0007000F000E001E000E001E000E003C000E0078 -001C01E000FFFF80001A1A7E991D>I<0007E040003C18C000E005C001C003C003800180 -070001800E0001801C0001803C000100380001007800000078000000F0000000F0000000 -F0000000F0000000F0000400F0000400F0000400F0000800700010003000100038006000 -1C0080000703000001FC00001A1A7E991B>I<03FFF80000700F00007007800070038000 -E003C000E003C000E003C000E003C001C0078001C0070001C01E0001C0780003FFC00003 -8060000380300003803800070038000700380007003800070038000E0078000E0078000E -0078400E0078801C003C80FFC01F001A1A7E991D>82 D<001F080060D800803801003803 -001006001006001006001006000007000007C00003FC0001FF00007F80000FC00001C000 -01C00000C02000C02000C0600180600180600300700600CC1C0083F000151A7E9917>I< -000FC00001C00001C00001C000038000038000038000038000070000070003E700061700 -1C0E00380E00300E00700E00601C00E01C00E01C00E01C00E03900C03900E03900607900 -219A001E0E00121A7F9914>100 D<01F006081C04380470047008FFF0E000E000E000E0 -00E0046008601030600F800E107F8F12>I<0007C0000C60001CE00018C0003800003800 -00380000380000700000700007FF0000700000700000E00000E00000E00000E00000E000 -01C00001C00001C00001C00001C00001C000038000038000038000030000030000670000 -E60000CC000078000013217E9913>I<0300038003000000000000000000000000000000 -3C004E004E008E008E009C001C001C0038003800390071007100720072003C00091A7E99 -0D>105 D<703E0058C7009D03809E03809C03809C0380380700380700380700380E0070 -0E40700E40701C40701C80E00C8060070012107E8F17>110 D<30F059189E389C189C00 -9C0038003800380038007000700070007000E00060000D107E8F11>114 -D<03E006180818183818301C001FC00FE007F000700030E030E030806040C03F000D107E -8F12>I<06000E000E000E000E001C001C00FFE01C003800380038003800700070007000 -7000E080E080E100E100660038000B177E960E>I<380C4C0E4E0E8E069C069C061C0438 -0438043808700870083010382018400F800F107E8F13>118 D E -/Fl 59 122 df<60E0F0703010080507759914>18 D<183C3C1C08080810204080060B78 -990C>39 D<000400180030006000C0008001800300030006000E000C001C001800180038 -003000300070007000600060006000E000E000E000C000C000C000C000C0006000600060 -0020003000100008000E267B9B10>I<0040006000200030001000180018001800180018 -001800180018001800180018003800380030003000700070006000E000C000C001C00180 -03800300060006000C00180010002000400080000D267F9B10>I<183878380810102020 -4080050B7D830C>44 DI<3078F06005047C830C>I<000008 -0000180000180000300000300000600000600000C00000C0000180000300000300000600 -000600000C00000C0000180000300000300000600000600000C00000C000018000030000 -0300000600000600000C00000C0000180000180000300000600000600000C00000800000 -15257F9B14>I<007C000186000303000603000C03801C03801C03803803803803803803 -80700700700700700700700700E00E00E00E00E00E00E01C00E01C00E01800E030006060 -0030C0001F000011187C9714>I<000800180030007001F00E7000E000E000E000E001C0 -01C001C001C0038003800380038007000700070007000F00FFE00D187C9714>I<007C00 -0186000203000403800483800883801083801083801083801107001207000C0E00001C00 -0030000060000180000200000C00001001002001003C060067FE00C1FC0080F00011187D -9714>I<000300000380000700000700000700000E00000E00000E00001C00001C000018 -0000300000300000600000C00000C600018E00030E00021C00041C00081C00101C007FB8 -00807F80003800003800007000007000007000007000006000111F7F9714>52 -D<001E000061800180800303800603800E00001C000018000038000039F000721800740C -00780E00700E00F00E00E00E00E00E00E00E00E01C00E01C0060380060700030C0001F80 -0011187C9714>54 D<09C04017E0801FF1803C1F00300200600600400400800C00000800 -00180000300000300000700000600000E00000C00001C00001C000018000038000038000 -03800007000003000012187B9714>I<007C000186000703000E03000C03801C03803803 -80380380380380380780380700380F001817000C270007CE00000E00000C00001C000018 -00E03000E0600080C000C380003E000011187C9714>57 D<060F1E0C0000000000000000 -3078F06008107C8F0C>I<0000200000600000E00000E00001E00001F000027000027000 -047000087000087000107000107000207000407000407000803800FFF801003802003802 -0038040038040038080038180038FE01FF181A7E991D>65 D<03FFF800700E0070060070 -0700E00700E00700E00700E00701C00E01C01C01C03801C07003FFE00380780380380380 -1C07001C07001C07001C07001C0E00380E00380E00700E00E01C03C0FFFF00181A7D991B ->I<000F8200706200C01603801E07000C0E000C1C000C18000C38000830000870000070 -0000E00000E00000E00000E00000E00020E00020E00020E0004060004060008030010010 -06000C180003E000171A7A991B>I<03FFF80000700E00007007000070030000E0018000 -E0018000E0018000E001C001C001C001C001C001C001C001C001C0038003800380038003 -80038003800300070007000700070007000E0007000C000E001C000E0038000E0070000E -00E0001C038000FFFE00001A1A7D991D>I<03FFFF00700700700300700100E00100E001 -00E00100E00101C08001C08001C08001C18003FF00038100038100038100070200070004 -0700040700080E00080E00180E00100E00301C00E0FFFFE0181A7D991A>I<03FF007000 -70007000E000E000E000E001C001C001C001C0038003800380038007000700070007000E -000E000E000E001C00FF80101A7D990F>73 D<03FF0000700000700000700000E00000E0 -0000E00000E00001C00001C00001C00001C0000380000380000380000380000700000700 -100700100700200E00200E00600E00400E00C01C0380FFFF80141A7D9918>76 -D<03F8001FC00078003C000078003C000078005C0000B800B80000B800B800009C013800 -009C013800011C027000011C027000011C047000011C087000021C08E000021C10E00002 -1C10E000021C20E000041C41C000041C41C000041C81C000041C81C000080F038000080F -038000080E038000180C038000180C070000FE083FE000221A7D9922>I<03F007F80078 -00C00078008000780080009C0100009C0100009C0100008E0100010E0200010602000107 -0200010702000203840002038400020384000201C4000401C8000401C8000400E8000400 -E8000800F00008007000080070001800700018002000FE0020001D1A7D991D>I<001F80 -00706001C03003001806001C0E000C1C000C18000E38000E30000E70000E70000EE0001C -E0001CE0001CE00038E00038E00030E00070E000E0E000C06001807003003806001C1C00 -07E000171A7A991D>I<03FFF800701C00700600700700E00700E00700E00700E00701C0 -0E01C00E01C01C01C03803806003FF800380000380000700000700000700000700000E00 -000E00000E00000E00001C0000FF8000181A7D991A>I<03FFF000701C00700E00700700 -E00700E00700E00700E00701C00E01C01C01C03801C0E003FF800380C003806003807007 -00700700700700700700700E00E00E00E00E00E10E00E21C0062FF803C181A7D991C>82 -D<003F1000609001807001007003002006002006002006002006000007000007C00003F8 -0001FE00007F00000F80000380000180000180200180200180600300600300600600700C -00C8180087E000141A7D9916>I<3FFFFC381C0C201C04401C0440380480380480380480 -380400700000700000700000700000E00000E00000E00000E00001C00001C00001C00001 -C000038000038000038000038000078000FFF800161A79991B>I<7FE0FF0E00180E0010 -0E00101C00201C00201C00201C0020380040380040380040380040700080700080700080 -700080E00100E00100E00100E00200E00200E004006008006010003860000F8000181A78 -991D>I87 -D<01FF07F8007801C000380180003C0300001C0200001C0400001E0800000E1000000E20 -0000074000000780000007800000038000000380000007C0000009C0000011C0000020E0 -000040E0000080F0000100700003007000020078000C0038001C003800FF01FF001D1A7E -991D>I<007E007E00C000C000C000C00180018001800180030003000300030006000600 -060006000C000C000C000C00180018001800180030003000300030006000600060006000 -C000FC00FC000F257E9B0C>91 D<007E007E000C000C000C000C00180018001800180030 -003000300030006000600060006000C000C000C000C00180018001800180030003000300 -030006000600060006000C00FC00FC000F25819B0C>93 D<03CC0E2E181C381C301C701C -E038E038E038E038C072C072C07260F261341E180F107C8F14>97 -D<7E000E000E000E001C001C001C001C00380038003BC03C307830701870187018E038E0 -38E038E038C070C060C0E060C063801E000D1A7C9912>I<01E006180C18183830107000 -6000E000E000E000E000E008E010602030C01F000D107C8F12>I<001F80000380000380 -000380000700000700000700000700000E00000E0003CE000E2E00181C00381C00301C00 -701C00E03800E03800E03800E03800C07200C07200C0720060F2006134001E1800111A7C -9914>I<01E00E181C08380870087010FFE0E000E000E000E000E0086010602030C01F00 -0D107C8F12>I<000700000980001B80003B000038000030000070000070000070000070 -0007FF0000E00000E00000E00000E00000E00001C00001C00001C00001C00001C0000380 -00038000038000038000030000070000070000060000660000E40000CC00007000001121 -81990C>I<00F300038B800607000E07000C07001C0700380E00380E00380E00380E0030 -1C00301C00301C00183C0018780007B800003800003800007000607000E0E000C1C0007F -000011177E8F12>I<1F80000380000380000380000700000700000700000700000E0000 -0E00000E7C000F86001E07001E07001C07001C0700380E00380E00380E00381C00701C80 -701C80703880703900E01900600E00111A7E9914>I<030706000000000000384C4E8E9C -9C1C3838707272E2E4643808197C980C>I<000C000E000C000000000000000000000000 -00E001380238043804380438007000700070007000E000E000E000E001C001C001C001C0 -03806380E700CE0078000F2081980C>I<1F8003800380038007000700070007000E000E -000E0E0E131C271C431C801F003C003F8039C038E070E270E270E270E4E0646038101A7E -9912>I<1F0707070E0E0E0E1C1C1C1C3838383870707070E4E4E4E4E830081A7D990A>I< -307C1E00598663009E0783809E0703809C0703809C070380380E0700380E0700380E0700 -380E0E00701C0E40701C0E40701C1C40701C1C80E0380C80601807001A107C8F1F>I<30 -7C005986009E07009E07009C07009C0700380E00380E00380E00381C00701C80701C8070 -3880703900E01900600E0011107C8F16>I<01F006180C0C180E300E700E600EE00EE00E -E00CE01CE018E030606030C01F000F107C8F14>I<030F000590C009E0C009C06009C060 -09C0600380E00380E00380E00380E00701C00701800703800703000E8E000E78000E0000 -0E00001C00001C00001C00001C0000FF00001317808F14>I<03C20E2E181C381C301C70 -1CE038E038E038E038C070C070C07060F061E01EE000E000E001C001C001C001C01FF00F -177C8F12>I<30F05D189E389C189C009C0038003800380038007000700070007000E000 -60000D107C8F10>I<03E004300830187018601C001F801FC00FE000E00060E060E06080 -C041803E000C107D8F10>I<06000E000E000E000E001C001C00FFC01C00380038003800 -38007000700070007000E100E100E100E200E40038000A177C960D>I<38064C074E0E8E -0E9C0E9C0E1C1C381C381C381C7039703970393079389A0F0C10107C8F15>I<38184C1C -4E1C8E0C9C0C9C0C1C08380838083810701070107020304018C00F000E107C8F12>I<38 -0C104C0E384E1C388E1C189C1C189C1C181C381038381038381038381070702070702070 -704030704018B8800F0F0015107C8F19>I<38064C074E0E8E0E9C0E9C0E1C1C381C381C -381C703870387038307838F00F700070006060E0E1C0C18047003C0010177C8F13>121 -D E /Fm 6 106 df0 D<03C00FF01FF83FFC7FFE7FFE -FFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010107E9115>15 +03801C03C01C03E0FF87F815137F9218>107 D E /Fi 19 122 df<000E001E007800F0 +01C00380070007000E001C001C003800380070007000E000E000E000E000E000E000E000 +E000E000E000E000E0007000700038001C000E0006000F21769C16>40 +D<00C000E0007000700038001C001C001C001C000E000E000E000E000E000E001C001C00 +1C001C003800380070007000E001C001C0038007000E001C007800F000C0000F217C9C16 +>I<060F1F1E0C000000000000000070F0F8F0600812769116>58 +D<00C001E003E003C00180000000000000000000000000000000000C001E001E001E000E +000E001C003C007800F00040000B18799116>I<03C807FC0FFC1C7C3878383870387038 +E070E070E070E0F3E0E7E1E7E3E77FFE3F7C1C3810127A9116>97 +D<00F803FC07FE0F0E1C1E380E70007000E000E000E000E000E000F002700F3FFE1FFC0F +F010127A9116>99 D<003E007F003F000E000E000E000E03DC07FC0FFC1C7C3878383870 +387038E070E070E070E0F3E0E7E1E7E3E77FFE3F7C1C3810197A9816>I<00F803FC07FE +0F0E1C0E380E701E7FFCFFF8FFE0E000E000E000F002780F3FFE1FFC0FF010127A9116> +I<001E20007F7000FFF001E1F003C1E00381E00700E00700E00E01C00E01C00E01C00E03 +C00E03800E0780071F8007FF8003FF0001E700000700000700000E00000E00300E00783C +00FFF8007FF0003FC000141B7E9116>103 D<006000F000F0006000000000000000000F +001F803F8071C07380E380E3800700070007000E000E301C701C701CE01FE00FC007000C +1A799916>105 D<7F00FF807F8007000700070007000E000E000E000E001C001C001C00 +1C00380038003800386070E070E070E07FC03F800F000B19789816>108 +D<06F0F00FF9F80FFFFC0F9F9C1F1F1C1E1E1C1C1C1C1C1C1C3C3C383838383838383838 +70707070707070707060707070E0E07060603016127E9116>I<1C3C003EFE007FFF007F +C700EF8700EF0700EF07000E07001E0E001C0E001C0E001C1CC0381DC0381DC03839C038 +1F80701F00300E0012127C9116>I<01E007F00FF81E1C3C1C381E700E700EE01CE01CE0 +1CE038E038E07071E07FC03F801E000F127A9116>I<03878007CFC00FFFE00EF8E01CF0 +F01CF0701CE07000E07001C0E001C0E001C0E001C1C003C1C003C38003C78003FF00077E +000738000700000700000E00000E00000E00000E00007F8000FFC0007F8000141B7F9116 +>I<1C1F003E7F807FFFC077E1E0E7C0E0E781E0E781E00700C00F00000E00000E00000E +00001C00001C00001C00001C000038000018000013127B9116>114 +D<00FC0001FE0003FF000707800E07000E06000E000007F00003FC0000FE000007000007 +00700700F00700E01E00FFFC007FF8001FE00011127C9116>I<004000E000E001C001C0 +01C001C07FFCFFFC7FFC038007000700070007000E000E000E000E0C1C1C1C1C1C381FF0 +0FE007C00E197A9816>I<0E00801F01C03F81C07381C0738380E38380E703800703800E +07000E07000E07000E0F000E0E000E1E000E3E000FFE0007FC0003DC00001C00001C0000 +380038780078700071E0007FC0003F80001E0000121B7C9116>121 +D E /Fj 2 84 df<03FFF80000700F00007007800070038000E003C000E003C000E003C0 +00E003C001C0078001C0070001C01E0001C0780003FFC000038060000380300003803800 +070038000700380007003800070038000E0078000E0078000E0078400E0078801C003C80 +FFC01F001A1A7E991D>82 D<001F080060D8008038010038030010060010060010060010 +06000007000007C00003FC0001FF00007F80000FC00001C00001C00000C02000C02000C0 +600180600180600300700600CC1C0083F000151A7E9917>I E /Fk +6 116 df<03F0400C0CC01002C03001C06000C0E000C0E00040E00040E00040F00000F8 +00007E00007FE0003FFC001FFF0007FF80007F800007C00003E00001E00000E08000E080 +00E08000E0C000C0C000C0E00180D00300CE060081F800131E7D9C19>83 +D<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F00 +20000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 +00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F80 +0003FFFC001B1C7D9B21>I107 DI<01F800070E000C03001C03803801C07801E07000E0F000F0F000 +F0F000F0F000F0F000F0F000F0F000F07000E07801E03801C01C03801E0780070E0001F8 +0014157E941A>111 D<1F1030F06030C030C010C010E000E0007E003FC01FE003F00078 +00380018801880188010C030F0608F800D157E9413>115 D E /Fl +16 119 df<000001800000078000001E00000078000001E00000078000000E0000003800 +0000F0000003C000000F0000003C000000F0000000F00000003C0000000F00000003C000 +0000F0000000380000000E0000000780000001E0000000780000001E0000000780000001 +80191A7D9620>60 D62 D<00000C0000000C0000001C0000001C0000003C0000005C +0000005C0000009E0000008E0000010E0000020E0000020E0000040E0000040E0000080E +0000100E0000100E0000200700003FFF0000400700008007000080070001000700010007 +000200070004000700040007001C000780FF803FF01C1D7F9C1F>65 +D<01FFFF00003C01C0003800E0003800F0003800700038007000700070007000F0007000 +F0007001E000E003C000E0078000E01F0000FFFC0001C00F0001C0078001C003C001C003 +C0038003C0038003C0038003C0038003C0070007800700070007000E0007001C000E0078 +00FFFFC0001C1C7E9B1F>I<0001F808000E061800380138006000F001C0007003800070 +070000300F0000200E0000201C0000203C0000203C000000780000007800000078000000 +F0000000F0000000F0000000F0000000F0000100F0000100F00001007000020070000200 +30000400380008001C0010000E0060000701800000FE00001D1E7E9C1E>I<01FFFE0000 +3C03C0003800E0003800F00038007000380070007000F0007000F0007000F0007001E000 +E001C000E0078000E01E0000FFF00001C0380001C00C0001C00E0001C00E0003800E0003 +800E0003800E0003800E0007001E0007001E0807001E0807001E100F000F10FFE00F2000 +0003C01D1D7E9B20>82 D<000FC100303300400F00800601800603000603000606000406 +000407000007000007800003F00001FF0000FFC0003FE00003E00000F000007000003000 +00302000302000306000606000606000C0600080F00300CC060083F800181E7E9C19>I< +0007E00000E00000E00001C00001C00001C00001C000038000038000038000038001E700 +0717000C0F00180F00380E00300E00700E00700E00E01C00E01C00E01C00E01C00E03880 +E03880E038806078803199001E0E00131D7E9C16>100 D<01F007080C08180438083008 +70307FC0E000E000E000E000E000E0046008601030600F800E127E9113>I<0001E00006 +30000E78000EF0001C60001C00001C00001C00001C0000380000380003FFC00038000038 +0000700000700000700000700000700000E00000E00000E00000E00000E00001C00001C0 +0001C00001C00001C000018000038000038000630000F30000F60000E400007800001525 +7E9C14>I<01C003C003C001800000000000000000000000001C00270047004700870087 +000E000E001C001C001C003800388038807080710032001C000A1C7E9B0E>105 +D<3C1F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03801C07 +00380710380710380E10380E2070064030038014127E9119>110 +D<3C3C4E424687470F8E1E8E0C0E000E001C001C001C001C003800380038003800700030 +0010127E9113>114 D<01F0060C0C040C0E180C1C001F000FE00FF003F80038201C7018 +F018F010803060601F800F127E9113>I<00C001C001C001C00380038003800380FFF007 +00070007000E000E000E000E001C001C001C001C00382038203840384018800F000C1A80 +990F>I<1C03270747074703870187010E010E011C021C021C021C041804180818081C10 +0C2007C010127E9114>118 D E /Fm 7 58 df<0C001C00EC000C000C000C000C000C00 +0C000C000C000C000C000C000C000C000C000C00FFC00A137D9211>49 +D<1F0060C06060F070F030603000700070006000C001C00180020004000810101020207F +E0FFE00C137E9211>I<0FC030707038703870380038003000E00FC0007000380018001C +601CF01CF018E03860701FC00E137F9211>I<006000E000E00160026006600C60086010 +6020606060C060FFFC0060006000600060006003FC0E137F9211>I<60607FC07F804400 +4000400040004F0070C040E0006000700070E070E070E06040E021C01F000C137E9211> +I<0FC0107020186018601870183C303F600F800FE031F06078C01CC00CC00CC00C601830 +300FC00E137F9211>56 D<0F00308060404060C020C030C030C0304030607030B00F3000 +3000200060E040E08041003E000C137E9211>I E /Fn 60 122 df18 D<183C3C3C0404080810204080060C779C0D>39 +D<00030006000800180030006000C000C0018003000300060006000C000C001C00180018 +00380030003000700070006000600060006000E000E000E000E000E00060006000600060 +00600020003000100008000800102A7B9E11>I<001000100008000C0004000600060006 +00060006000700070007000700070006000600060006000E000E000C000C001C00180018 +0038003000300060006000C000C001800300030006000C00180010006000C000102A809E +11>I<183878380808101020404080050C7D830D>44 DI<30 +78F06005047C830D>I<00000200000600000600000C00000C0000180000300000300000 +600000600000C00000C0000180000180000300000600000600000C00000C000018000018 +0000300000300000600000C00000C0000180000180000300000300000600000C00000C00 +00180000180000300000300000600000600000C0000080000017297F9E15>I<003E0000 +E1800181C00300C00700C00600C00E00E00C00E01C00C01C00C01801C03801C03801C038 +01C0700380700380700380700380600700E00700E00600E00E00E00E00E00C00E0180060 +380060700030C0001F0000131D7C9B15>I<0004000C00180038007807B8007000700070 +007000E000E000E000E001C001C001C001C0038003800380038007000700070007000F00 +FFF00E1C7B9B15>I<003E000041800080C00100C00200E00440E00440E00840E00840E0 +0840E01081C01081C01103800E0300000600000C00001800006000008000030000040000 +0800401000802000802001007F070043FE0081FC00807800131D7D9B15>I<0001800001 +C0000380000380000380000300000700000700000600000E00000C00001C000018000018 +0000300000300000600000400000C600018E00010E00020E00061C000C1C00181C003F1C +0040F800803F8000380000380000700000700000700000700000E00000600012247E9B15 +>52 D<000F8000386000602000C0E00180E00300000600000E00000C00001C00001CF800 +3904003A06003C0300780300780300700380700300600700E00700E00700E00600E00E00 +E00C00601C0060180020300030C0000F8000131D7C9B15>54 D<09C0400FE0801FE1801C +6100302600201A00600400400C0080080080180000300000300000600000600000C00000 +C00001C0000180000380000300000700000700000700000E00000E00000E00001C00001C +0000180000121D799B15>I<001F000060C000C060018060030030030030060060070060 +0700C00780C003C10003E60001FC0000780001BC00061E000C0F00180700300380200380 +600180600180C00300C00300C006006004006008003830000FC000141D7D9B15>I<003E +0000E1000181800300C00600C00E00C00C00C01C00C01C00C01C01C03801C03801C03801 +C03803C0180380180780080B800C330003C700000700000E00000C00001C00001800E030 +00E0600080C000C180003E0000121D7C9B15>I<060F0F06000000000000000000003078 +F06008127C910D>I<0000180000001800000038000000380000007800000078000000B8 +00000138000001380000023C0000021C0000041C00000C1C0000081C0000101C0000101C +0000201C0000201C00007FFC0000C01C0000801C0001001C0001001E0002000E0002000E +0004000E000C000E001C001E00FF00FFC01A1D7E9C1F>65 D<01FFFF00003C0380003801 +C0003800E0003800E0003800E0007000E0007001E0007001E0007003C000E0038000E00F +0000E01E0000FFFC0001C00E0001C0070001C0078001C007800380078003800780038007 +800380078007000F0007000E0007001E0007003C000E00F000FFFFC0001B1C7E9B1D>I< +0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E000080 +1C0000803C0000803C000000780000007800000078000000F0000000F0000000F0000000 +F0000000F0000400F0000400F0000400F000080070000800700010003800200018004000 +0C0180000706000001F800001B1E7A9C1E>I<01FFFF00003C03C0003800E0003800E000 +380070003800700070007800700038007000380070007800E0007800E0007800E0007800 +E0007801C000F001C000F001C000F001C000E0038001E0038001C0038003C00380038007 +00070007000E0007001C00070038000E00E000FFFF80001D1C7E9B1F>I<01FFFFF0003C +00F0003800300038002000380020003800200070002000700020007008200070080000E0 +100000E0100000E0300000FFF00001C0200001C0200001C0200001C02000038040800380 +00800380008003800100070001000700030007000200070006000E003C00FFFFFC001C1C +7E9B1C>I<03FF0078007000700070007000E000E000E000E001C001C001C001C0038003 +800380038007000700070007000E000E000E000E001E00FFC0101C7D9B10>73 +D<01FFC0003C0000380000380000380000380000700000700000700000700000E00000E0 +0000E00000E00001C00001C00001C00001C0000380020380020380020380040700040700 +0C0700180700380E00F0FFFFF0171C7E9B1A>76 D<01FE0001FE003E0001E0002E0003C0 +002E0005C0002E0005C0002E0009C0004E000B80004E001380004E002380004700238000 +870047000087004700008700870000870107000107010E000107020E000107040E000107 +040E000207081C000203881C000203901C000203A01C000403A038000403C038000403C0 +38000C038038001C03007800FF8307FF00271C7E9B25>I<01FC00FF80001C001C00002E +001800002E001000002E0010000027001000004700200000430020000043802000004380 +20000081C040000081C040000081C040000080E040000100E08000010070800001007080 +00010070800002003900000200390000020039000002001D000004001E000004000E0000 +04000E00000C000E00001C00040000FF80040000211C7E9B1F>I<0007F000001C1C0000 +700E0000E0070001C0038003800380070003800E0003C01E0003C01C0003C03C0003C03C +0003C0780003C0780003C0780003C0F0000780F0000780F0000780F0000F00F0000F00F0 +000E00F0001E00F0003C0070003800700070007800E0003801C0001C0380000E0E000003 +F800001A1E7A9C20>I<01FFFE00003C0380003801C0003800E0003800E0003800E00070 +01E0007001E0007001E0007001C000E003C000E0038000E0070000E01C0001FFF00001C0 +000001C0000001C000000380000003800000038000000380000007000000070000000700 +0000070000000F000000FFE000001B1C7E9B1C>I<01FFFE00003C0780003801C0003801 +E0003800E0003800E0007001E0007001E0007001E0007003C000E0038000E0070000E01C +0000FFE00001C0300001C0180001C01C0001C01C0003801C0003801C0003801C0003801C +0007003C0007003C2007003C2007003C200F003C40FFE01E8000000F001B1D7E9B1E>82 +D<000F8400304C00403C0080180100180300180300180600100600100600000700000700 +0003E00003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C06001 +80600180600300600200F00400CC180083E000161E7D9C17>I<1FFFFFC01C0701C0300E +00C0200E0080600E0080400E0080401C0080801C0080801C0080001C0000003800000038 +000000380000003800000070000000700000007000000070000000E0000000E0000000E0 +000000E0000001C0000001C0000001C0000001C0000003C000007FFE00001A1C799B1E> +I<7FF03FE00F0007000E0006000E0004000E0004000E0004001C0008001C0008001C0008 +001C00080038001000380010003800100038001000700020007000200070002000700020 +00E0004000E0004000E0004000E0008000E0008000E00100006002000060040000300800 +001830000007C000001B1D789B1F>I87 D<01FF81FE003E0078001C00 +60001C00C0001E0080000E0100000F02000007040000070800000790000003A0000003E0 +000001C0000001C0000001E0000002E0000004E0000008F0000010700000207000006038 +0000C0380000803C0001001C0002001C0006001E001E001E00FF007FC01F1C7E9B1F>I< +003F80007F0000600000600000600000C00000C00000C00000C000018000018000018000 +0180000300000300000300000300000600000600000600000600000C00000C00000C0000 +0C0000180000180000180000180000300000300000300000300000600000600000600000 +600000C00000C00000FE0000FE000011297E9E0D>91 D<003F80007F0000030000030000 +0300000600000600000600000600000C00000C00000C00000C0000180000180000180000 +180000300000300000300000300000600000600000600000600000C00000C00000C00000 +C000018000018000018000018000030000030000030000030000060000060000FE0000FE +00001129819E0D>93 D<01E307170C0F180F380E300E700E700EE01CE01CE01CE01CE039 +E039E0396079319A1E0C10127C9115>97 D<3F00070007000E000E000E000E001C001C00 +1C001C0039E03A183C0C380C700C700E700E700EE01CE01CE01CE018E038E030E06060C0 +31801E000F1D7C9C13>I<00F803040E041C0E181C300070007000E000E000E000E000E0 +00E0046008601030600F800F127C9113>I<0007E00000E00000E00001C00001C00001C0 +0001C000038000038000038000038001E7000717000C0F00180F00380E00300E00700E00 +700E00E01C00E01C00E01C00E01C00E03900E03900E03900607900319A001E0C00131D7C +9C15>I<00F807040C0418023804300470087FF0E000E000E000E000E000600460083010 +30600F800F127C9113>I<0003C0000670000C70001C60001C00001C0000380000380000 +380000380000380003FF8000700000700000700000700000700000E00000E00000E00000 +E00000E00001C00001C00001C00001C00001C00003800003800003800003000003000007 +0000C60000E60000CC00007800001425819C0D>I<0078C001C5C00303C00603C00E0380 +0C03801C03801C0380380700380700380700380700380E00380E00380E00181E000C7C00 +079C00001C00001C00003800003800C03000E07000C1C0007F0000121A7E9113>I<0FC0 +0001C00001C0000380000380000380000380000700000700000700000700000E3E000EC3 +000F03800E03801E03801C03801C03801C0380380700380700380700380E00700E40700E +40701C40701C80E00C80600700121D7E9C15>I<01800380010000000000000000000000 +000000001C002600470047008E008E000E001C001C001C00380038007100710071007200 +72003C00091C7C9B0D>I<00030007000300000000000000000000000000000078008C01 +0C020C021C041C001C001C0038003800380038007000700070007000E000E000E000E001 +C001C0C180E300C60078001024819B0D>I<0FC00001C00001C000038000038000038000 +0380000700000700000700000700000E07800E08800E11C00E21C01C41801C80001D0000 +1E00003FC00038E000387000387000707100707100707100707200E03200601C00121D7E +9C13>I<1F800380038007000700070007000E000E000E000E001C001C001C001C003800 +3800380038007000700070007000E200E200E200E40064003800091D7D9C0B>I<1C1E07 +80266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701 +C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D127C +9122>I<383E004CC3004D03804E03809E03809C03801C03801C03803807003807003807 +00380E00700E40700E40701C40701C80E00C8060070012127C9117>I<00F800030C000E +06001C0300180300300300700380700380E00700E00700E00700E00E00E00E00E01C0060 +180060300030E0000F800011127C9115>I<03878004C86004D03004E03009C03009C038 +01C03801C0380380700380700380700380600700E00700C00701800783000E86000E7800 +0E00000E00001C00001C00001C00001C0000380000FF0000151A809115>I<01E107130C +0F180F380E300E700E700EE01CE01CE01CE01CE038E038E038607831F01E700070007000 +E000E000E000E001C00FF8101A7C9113>I<1C3C2642468747078E068E000E000E001C00 +1C001C001C0038003800380038007000300010127C9112>I<01F006080C080C1C18181C +001F001FC00FF007F0007800386030E030C030806060C01F000E127D9111>I<03000700 +070007000E000E000E000E00FFE01C001C001C0038003800380038007000700070007000 +E080E080E100E100660038000B1A7C990E>I<1C01802E03804E03804E03808E07008E07 +001C07001C0700380E00380E00380E00380E00301C80301C80301C80383C80184D000F86 +0011127C9116>I<1C062E0E4E064E068E028E021C021C02380438043804380830083008 +3010382018400F800F127C9113>I<1E01832703874703874703838707018707010E0701 +0E07011C0E021C0E021C0E021C0E04180C04181C04181C081C1E080C263007C3C018127C +911C>I<1C01802E03804E03804E03808E07008E07001C07001C0700380E00380E00380E +00380E00301C00301C00301C00383C001878000FB800003800003000007000E06000E0C0 +008180004300003C0000111A7C9114>121 D E /Fo 6 106 df0 D<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0FFFFC0FFFFC0FFFFC0 +FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F00012127E9317>15 +D<000F0038006000E001C001C001C001C001C001C001C001C001C001C001C001C001C001 +C001C0038007001E00F8001E000700038001C001C001C001C001C001C001C001C001C001 +C001C001C001C001C001C000E000600038000F102D7DA117>102 +DI<0020006000C000C000C0 +01800180030003000300060006000C000C0018001800180030003000600060006000C000 +C000600060006000300030001800180018000C000C000600060003000300030001800180 +00C000C000C0006000200B2E7CA112>II E /Fp 9 108 df0 +D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010107E +9115>15 D<00000030000000001800000000180000000018000000000C000000000C0000 +000006000000000300000000038000000000C0FFFFFFFFF8FFFFFFFFF800000000C00000 +000380000000030000000006000000000C000000000C0000000018000000001800000000 +1800000000300025167E942A>33 D<000003000000000180000000018000000000C00000 +0000E0000000006000FFFFFFF000FFFFFFFC000000000E00000000038000000001E00000 +00007800000000E0000000038000000007000000000C00FFFFFFF800FFFFFFF000000000 +6000000000C000000000C00000000180000000018000000003000025187E952A>41 D<003C00E001C00180038003800380038003800380038003800380038003800380038003 0007001C00F0001C00070003000380038003800380038003800380038003800380038003 800380018001C000E0003C0E297D9E15>102 DII E /Fn 9 108 df0 D<07801FE03FF07FF87FF8FFFC -FFFCFFFCFFFCFFFCFFFC7FF87FF83FF01FE007800E107E9013>15 -D<00000180000000018000000000C000000000C000000000600000000060000000003000 -00000018000000000C00FFFFFFFF80FFFFFFFF800000000C000000001800000000300000 -000060000000006000000000C000000000C0000000018000000001800021147E9226>33 -D<000018000000000C000000000C0000000006000000000700000000030000FFFFFFC000 -FFFFFFE00000000038000000001E0000000007800000000E0000000038000000007000FF -FFFFC000FFFFFF800000000300000000060000000006000000000C000000000C00000000 -18000021167E9326>41 D<003C00E001C003800380038003800380038003800380038003 -8003800380038007001E00F8001E00070003800380038003800380038003800380038003 -8003800380038001C000E0003C0E257E9B13>102 DI<0080018003 -0003000300060006000C000C000C0018001800180030003000600060006000C000C00060 -0060006000300030001800180018000C000C000C00060006000300030003000180008009 -267D9B0F>II<8040C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 -C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 -C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C080400A267C9B13>107 -D E /Fo 45 122 df<60F0F0F0F0F0F0F0F0F0F0700000000060F0F0600414799312>33 -D<0100030003000F803FE073704338C338C338C31073007F003FC00FE003F003384318E3 -18E318E33073603FC00F800300030001000D1A7E9612>36 D<60F0F878181818303060C0 -80050C799312>39 D<0180038006000C0018003800300070007000E000E000E000E000E0 -00E000E000700070003000380018000C0006000380018009197B9612>I<80C06030181C -0C0E0E070707070707070E0E0C1C183060C08008197C9612>I<070007000700E738FFF8 -7FF01FC01FC07FF0FFF8E7380700070007000D0E7E9012>I<0380038003800380038003 -80FFFEFFFEFFFE0380038003800380038003800F0F7F9112>I45 D<60F0F0600404798312>I<0018003800380070007000E000E001C001C001C003 -800380070007000E000E001C001C001C003800380070007000E000E000C0000D1A7E9612 ->I<07C00FE01C703838701C701CE00EE00EE00EE00EE00EE00EE00EE01E701C701C3838 -1C700FE007C00F147F9312>I<060006000E001E00FE00EE000E000E000E000E000E000E -000E000E000E000E000E000E00FFE0FFE00B147D9312>I<0F803FC070E0E070E038E038 -403800380030007000E000C00180030006000C00183830387FF87FF80D147E9312>I<0F -C03FF07838701C201C001C0038007007E007F00038001C000E000E400EE00EE01C78383F -F00FC00F147F9312>I<00F001F00370037006700E700C701C70387038707070E070FFFE -FFFE007000700070007003FE03FE0F147F9312>I<60F0F06000000000000060F0F06004 -0E798D12>58 D<60F0F06000000000000060F0F070303060C0800413798D12>I<001800 -7800F801E007C00F801E003C00F800F000F8003C001E000F8007C001E000F8007800180D -137E9312>I62 D<7FFEFFFEE38EE38EE38E03800380038003800380 -038003800380038003800380038003800FE00FE00F147F9312>84 -D86 D<1FC0003FF000383800101C00001C0007FC003FFC00781C -00E01C00E01C00E01C00703C003FFF801FCF80110E7F8D12>97 DI<07F01FF8383870106000E000E000E000E0006000703838381FF007E00D0E7E8D12>I< -00F800F8003800380038003807B81FF8387870386038E038E038E038E038603870783878 -1FFE0FBE0F147F9312>I<07801FE0387070706038E038FFF8FFF8E0006000703838381F -F007C00D0E7E8D12>I<007E00FF01C70382038003807FFEFFFE03800380038003800380 -038003800380038003803FF83FF81014809312>I<0F9E1FFF38E7707070707070707038 -E03FC03F8070003FE03FF83FFC701EE00EE00EE00E600C783C1FF00FE010167F8D12>I< -F800F800380038003800380039E03FF03E383C3838383838383838383838383838383838 -FE3EFE3E0F147F9312>I<06000F000F0006000000000000007F007F0007000700070007 -00070007000700070007000700FFF0FFF00C157D9412>I107 -DIII<0F803FE038E07070E038E038 -E038E038E038F078707038E03FE00F800D0E7E8D12>II< -079C1FFC387C703C601CE01CE01CE01CE01C601C703C387C1FFC079C001C001C001C001C -001C007F007F10157F8D12>II<1FF03FF06070C070E0007F003FE00FF000786018E018F030 -FFE0DFC00D0E7E8D12>I<06000E000E000E007FF8FFF80E000E000E000E000E000E000E -000E1C0E1C0E1C07F801E00E127F9112>IIII<7C7C7C7C1CF00EE00FC007C00380078007C00EE01E -F01C70FC7EFC7E0F0E7F8D12>II -E /Fp 21 119 df<000180000180000380000380000780000780000B8000138000138000 -21C00021C00041C00081C00081C00101C001FFC00201C00201C00401C00801C00801C018 -01E0FE07F815177E961A>65 D<03FE0000E00000E00000E00000E00001C00001C00001C0 -0001C0000380000380000380000380000700000700200700200700400E00400E00C00E00 -800E01801C0780FFFF0013177E9616>76 D<03FFE000E03800E01C00E01C00E01C01C01C -01C01C01C01C01C0380380700381C003FF000381800700C00700E00700E00700E00E01C0 -0E01C00E01C20E01C21C00C4FF807817177E961A>82 D<007C4001828003018006018006 -01800C01000C01000E00000E00000FC00007F80003FC00007C00000E00000E0000060020 -0600400C00400C00600800601000D8600087C00012177D9614>I<03900C701870303030 -60606060606060C0C0C0C840C841C862D01C700D0E7C8D12>97 D<07C00C6030E020E060 -00C000C000C00080008000C020C04061803E000B0E7C8D10>99 D<003E000C000C000C00 -0C001800180018001803B00C70187030303060606060606060C0C0C0C840C841C862D01C -700F177C9612>I<07801840302060206040FF80C000C000C000C000C020C04061803E00 -0B0E7C8D10>I<01C4063C0C1C181C1818301830183018203020302030307011E00E6000 -60006060C0E0C0C3807E000E147E8D10>103 D<1F0006000600060006000C000C000C00 -0C0019E01A301C10181030303030303030306060606460C460C8C048C0700E177D9612> -I<030706000000000000182C4C4C8C18181830326264243808177D960B>I<3E0C0C0C0C -181818183030303060606060C0C8C8C8D06007177D9609>108 D<30783C00498CC6004E -0502004C0602009C0E0600180C0600180C0600180C060030180C0030180C803018188030 -1818806030090060300E00190E7D8D1D>I<3078498C4E044C049C0C180C180C180C3018 -3019303130316012601C100E7D8D14>I<078018C0304060606060C060C060C06080C080 -C08180C10046003C000B0E7B8D12>I<0C3812C41306130626060606060606060C0C0C0C -0C180C101A2019C018001800300030003000FC000F147F8D12>I<30F04B184E384C3098 -001800180018003000300030003000600060000D0E7D8D0F>114 -D<07800C4018E018E038001E001F8007C000C060C0E0C0C180C3003E000B0E7D8D0F>I< -060006000C000C000C000C00FF8018001800180030003000300030006000610061006200 -6400380009147D930C>I<38042C0C4C0C4C0C8C18181818181818303030323032307218 -B40F1C0F0E7D8D13>I<38102C184C184C188C1018101810181030203020304030401880 -0F000D0E7D8D10>I E /Fq 66 122 df<00FCF807839C0E079C1C07081C07001C07001C -07001C07001C0700FFFFE01C07001C07001C07001C07001C07001C07001C07001C07001C -07001C07001C07001C07007F1FE01617809615>11 D<00FC000782000E07001C07001C02 -001C00001C00001C00001C0000FFFF001C07001C07001C07001C07001C07001C07001C07 -001C07001C07001C07001C07001C07007F1FC01217809614>I<60C0F1E0F1E070E01020 -102020402040408040800B0A7F9612>34 D<60F0F070101020204040040A7D960A>39 -D<0102040C1818303070606060E0E0E0E0E0E0E0E0E0E060606070303018180C04020108 -227D980E>I<8040203018180C0C0E060606070707070707070707070606060E0C0C1818 -3020408008227E980E>I<60F0F070101020204040040A7D830A>44 -DI<60F0F06004047D830A>I<07C018303018701C600C600CE00E -E00EE00EE00EE00EE00EE00EE00EE00E600C600C701C30181C7007C00F157F9412>48 -D<06000E00FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E -000E000E00FFE00B157D9412>I<0F8030E040708030C038E03840380038007000700060 -00C00180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE030306018701C70 -1C001C00180038006007E000300018000C000E000EE00EE00EC00C401830300FE00F157F -9412>I<00300030007000F001F001700270047008701870107020704070C070FFFE0070 -007000700070007003FE0F157F9412>I<60307FE07FC0440040004000400040004F8070 -E040700030003800384038E038E0388030406020C01F000D157E9412>I<01F00608080C -181C301C70006000E000E3E0EC30F018F00CE00EE00EE00E600E600E300C3018183007C0 -0F157F9412>I<07E018302018600C600C700C78183E101F6007C00FF018F8607C601EC0 -0EC006C006C004600C38300FE00F157F9412>56 D<07C0183030186018E00CE00CE00EE0 -0EE00E601E301E186E0F8E000E000C001C70187018603020E01F800F157F9412>I<60F0 -F06000000000000060F0F060040E7D8D0A>I<00FC000303000C00C01000202078102184 -104302084701C88601C48E01C48E01C48E01C48E01C48E01C48601C44701C44303C42184 -C82078701000000C001C0300F000FF0016177E961B>64 D66 -D<00FC100383300E00B01C0070380030300030700010600010E00010E00000E00000E000 -00E00000E00000E000106000107000103000203800201C00400E008003830000FC001417 -7E9619>II70 D<007E080381980600580C003818001830001870000870 -0008E00008E00000E00000E00000E00000E003FEE000387000387000383000381800380C -00380600380380D8007F0817177E961C>III<0FF800E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000 -E000E0E0E0E0E0C1C061801F000D177E9612>I76 DII<00FC000303000E01C01C00E038007030 -0030700038600018E0001CE0001CE0001CE0001CE0001CE0001CE0001C70003870003830 -00303800701C00E00E01C003030000FC0016177E961B>II<0FC4302C601C400C -C004C004C004E00070007F003FE00FF801FC001C000E0006800680068006C004E008D810 -87E00F177E9614>83 D<7FFFF86038184038084038088038048038048038040038000038 -000038000038000038000038000038000038000038000038000038000038000038000038 -0000380003FF8016177F9619>II87 -DI91 D<204020404080408081008100E1C0F1E0F1E060C00B0A7B9612> -II<3FC0706070302038003803F81E3830387038E039E039E07970FF1F1E100E7F -8D12>97 DI<07F01838303870106000E000E000E000E000600070083008183007 -C00D0E7F8D10>I<003E00000E00000E00000E00000E00000E00000E00000E00000E0007 -CE001C3E00300E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E0018 -2E0007CF8011177F9614>I<0FC0186030307038E018FFF8E000E000E000600070083010 -183007C00D0E7F8D10>I<03E006700E701C201C001C001C001C001C00FF801C001C001C -001C001C001C001C001C001C001C001C001C007F800C1780960B>I<0F9E18E330607070 -70707070306018C02F80200060003FE03FF83FFC600EC006C006C006600C38380FE01015 -7F8D12>II<307878300000000000F8383838383838383838383838FE07177F96 -0A>I<0300078007800300000000000000000000001F8003800380038003800380038003 -80038003800380038003800380038003804380E300E7007C00091D82960B>IIIII<07C018303018600C600CE00EE00EE00EE00EE00E701C301818 -3007C00F0E7F8D12>II<07C2001C2600381E00700E00600E00E00E00E00E00E00E00E00E00600E0070 -0E00301E001C2E0007CE00000E00000E00000E00000E00000E00003F8011147F8D13>I< -F9E03A703C703820380038003800380038003800380038003800FF000C0E7F8D0E>I<1F -4060C0C040C040E000FF007F801FC001E080608060C060E0C09F000B0E7F8D0E>I<0800 -08000800180018003800FFC0380038003800380038003800380038403840384038401C80 -0F000A147F930E>IIIIII E /Fr 10 58 df<1F00318060C04040C060C060C060C060C060C060C0 -60C060404060C031801F000B107F8F0F>48 D<187898181818181818181818181818FF08 -107D8F0F>I<1F00618040C08060C0600060006000C00180030006000C00102020207FC0 -FFC00B107F8F0F>I<1F00218060C060C000C0008001001F00008000400060C060C06080 -4060801F000B107F8F0F>I<01800180038005800D801980118021804180C180FFE00180 -0180018001800FE00B107F8F0F>I<20C03F802E002000200020002F0030802040006000 -600060C06080C061801F000B107F8F0F>I<0780184030C060C06000C000CF00F080E040 -C060C060C060406060C030801F000B107F8F0F>I<40007FF07FE0804080400080010002 -0002000600040004000C000C000C000C000C000C117F900F>I<1F00318060C060C060C0 -31803F000E00338061C0C060C060C060C04060C01F000B107F8F0F>I<1F00318060C0C0 -40C060C060C06040E021E01E600060004060C0608063001E000B107F8F0F>I -E /Fs 84 125 df<00FE7C0381C60603CE0E03841C03801C03801C03801C03801C03801C +10>I<8010C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C0 +30C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C0 +30C030C030C030C030C030C03080100C2A7C9E15>107 D E /Fq +46 122 df<60F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F0600417789614>33 +D<00800180018007E01FF039BC619CC18EC18EC18EE18471807F801FE00FF001F8019C01 +8E4186E186E186E186718C39B81FF00FC00180018000800F1D7E9914>36 +D<60F0F878181818303060C080050C789614>39 D<0180038006000C001C001800380070 +0070007000E000E000E000E000E000E000E000E000E000700070007000380018001C000C +00060003800180091D799914>I<80C0603038181C0E0E0E0707070707070707070E0E0E +1C18383060C080081D7C9914>I<038003800380638CF39E7FFC3FF80FE00FE03FF87FFC +F39E638C0380038003800F107E9214>I<01C00001C00001C00001C00001C00001C00001 +C000FFFF80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00011117F93 +14>I45 D<70F8F8F8700505798414>I<0006000E000E001C +001C003800380070007000E000E001C001C0038003800380070007000E000E001C001C00 +3800380070007000E000E000C0000F1D7E9914>I<07C00FE01C7038383018701C701CE0 +0EE00EE00EE00EE00EE00EE00EE00EE00E701C701C383838381C700FE007C00F177E9614 +>I<0300030007000F003F00F70047000700070007000700070007000700070007000700 +07000700070007007FF07FF00C177C9614>I<0FC01FF03838701CE00EE00EE00E400E00 +0E001C001C00380030007000E001C0030006000C00180E300E7FFE7FFE0F177E9614>I< +0FC01FF03838701C701C201C001C0018003800700FE00FF00038001C000E000E400EE00E +E00E701C78383FF00FC00F177E9614>I<00780000F80001B80001B80003380003380006 +38000E38000C38001C3800383800303800703800E03800FFFF80FFFF8000380000380000 +380000380000380001FF0001FF0011177F9614>I<70F8F8F87000000000000070F8F8F8 +700510798F14>58 D<70F8F8F87000000000000060F0F8F878183070E0800515798F14> +I<0006001E003E00F801F003C00F801F003C00F800F000F8003C001F000F8003C001F000 +F8003E001E00060F157E9514>I62 +D76 D<7FFF80FFFF80E1C380E1C380E1C380E1C3 +8001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 +0001C00001C00001C0000FF8000FF80011177F9614>84 D86 +D<1FC0007FF000707800201800001C00001C0007FC001FFC003C1C00701C00E01C00E01C +00E01C00707C003FFF800F8F8011107E8F14>97 DI<03F80FFE1C0E3804700060 +00E000E000E000E00060007000380E1C1E0FFC03F00F107E8F14>I<007E00007E00000E +00000E00000E00000E00000E0007CE000FFE001C3E00301E00700E00E00E00E00E00E00E +00E00E00E00E00E00E00700E00301E00383E001FEFC007CFC012177F9614>I<07E00FF0 +1C38301C700CE00EE00EFFFEFFFEE00060007000380E1C1E0FFC03F00F107E8F14>I<00 +FC01FE038E07040700070007007FFEFFFE07000700070007000700070007000700070007 +0007000700FFF8FFF80F177F9614>I<07CF001FFF80383B80301800701C00701C00701C +003018003838003FF00037C0007000007000003FF8001FFC003FFE00700F00E00380E003 +80E00380E003807007003C1E001FFC0007F00011197F8F14>II<06000F000F00 +06000000000000000000FF00FF0007000700070007000700070007000700070007000700 +0700FFF8FFF80D187C9714>I107 DI< +FB8E00FFDF003CF3803CF38038E38038E38038E38038E38038E38038E38038E38038E380 +38E38038E380FEFBE0FE79E01310808F14>II<07C01FF03C78701C701CE00EE00EE00EE00EE00EE00E701C783C3C781FF007C00F10 +7E8F14>II<03E7000FF7001C1F00300F00700F00E00700E00700E00700 +E00700E00700E00700700F00300F001C3F000FF70007C700000700000700000700000700 +000700000700003FE0003FE013187F8F14>II<0FD83FF86038C038C038F0007F803FF007F8001C6006E006F006F81CFFF8CFE00F10 +7E8F14>I<06000E000E000E000E007FFCFFFC0E000E000E000E000E000E000E000E000E +0E0E0E0E0E0E1C07F801F00F157F9414>I +III<7E3F007E3F001E3C000E780007700007E00003E00001C00003C00003E000077000 +0E78000E38001C1C00FE3F80FE3F8011107F8F14>II +E /Fr 21 119 df<0000200000600000E00000E00001E00001F000027000027000047000 +087000087000107000107000207000407000407000803800FFF801003802003802003804 +0038040038080038180038FE01FF181A7E991D>65 D<03FF0000700000700000700000E0 +0000E00000E00000E00001C00001C00001C00001C0000380000380000380000380000700 +000700100700100700200E00200E00600E00400E00C01C0380FFFF80141A7D9918>76 +D<03FFF000701C00700E00700700E00700E00700E00700E00701C00E01C01C01C03801C0 +E003FF800380C00380600380700700700700700700700700700E00E00E00E00E00E10E00 +E21C0062FF803C181A7D991C>82 D<003F10006090018070010070030020060020060020 +06002006000007000007C00003F80001FE00007F00000F80000380000180000180200180 +200180600300600300600600700C00C8180087E000141A7D9916>I<03CC0E2E181C381C +301C701CE038E038E038E038C072C072C07260F261341E180F107C8F14>97 +D<01E006180C181838301070006000E000E000E000E000E008E010602030C01F000D107C +8F12>99 D<001F80000380000380000380000700000700000700000700000E00000E0003 +CE000E2E00181C00381C00301C00701C00E03800E03800E03800E03800C07200C07200C0 +720060F2006134001E1800111A7C9914>I<01E00E181C08380870087010FFE0E000E000 +E000E000E0086010602030C01F000D107C8F12>I<00F300038B800607000E07000C0700 +1C0700380E00380E00380E00380E00301C00301C00301C00183C0018780007B800003800 +003800007000607000E0E000C1C0007F000011177E8F12>103 D<1F8000038000038000 +0380000700000700000700000700000E00000E00000E7C000F86001E07001E07001C0700 +1C0700380E00380E00380E00381C00701C80701C80703880703900E01900600E00111A7E +9914>I<030706000000000000384C4E8E9C9C1C3838707272E2E4643808197C980C>I<1F +0707070E0E0E0E1C1C1C1C3838383870707070E4E4E4E4E830081A7D990A>108 +D<307C1E00598663009E0783809E0703809C0703809C070380380E0700380E0700380E07 +00380E0E00701C0E40701C0E40701C1C40701C1C80E0380C80601807001A107C8F1F>I< +307C005986009E07009E07009C07009C0700380E00380E00380E00381C00701C80701C80 +703880703900E01900600E0011107C8F16>I<01F006180C0C180E300E700E600EE00EE0 +0EE00CE01CE018E030606030C01F000F107C8F14>I<030F000590C009E0C009C06009C0 +6009C0600380E00380E00380E00380E00701C00701800703800703000E8E000E78000E00 +000E00001C00001C00001C00001C0000FF00001317808F14>I<30F05D189E389C189C00 +9C0038003800380038007000700070007000E00060000D107C8F10>114 +D<03E004300830187018601C001F801FC00FE000E00060E060E06080C041803E000C107D +8F10>I<06000E000E000E000E001C001C00FFC01C003800380038003800700070007000 +7000E100E100E100E200E40038000A177C960D>I<38064C074E0E8E0E9C0E9C0E1C1C38 +1C381C381C7039703970393079389A0F0C10107C8F15>I<38184C1C4E1C8E0C9C0C9C0C +1C08380838083810701070107020304018C00F000E107C8F12>I +E /Fs 67 122 df<00FE7C0381C60603CE0E03841C03801C03801C03801C03801C03801C 0380FFFFF01C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C 03801C03801C03801C0380FF8FF0171A809916>11 D<00FE000381000601800E03801C01 001C00001C00001C00001C00001C0000FFFF801C03801C03801C03801C03801C03801C03 -801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF0141A809915>I<00 -7E1F8001C170400703C060060380E00E0380400E0380000E0380000E0380000E0380000E -038000FFFFFFE00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E -0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E07F8FE3FC1E1A809920 ->14 D18 D<1C1C3C7060C0800607789913>I<60F0F0F0 -F0F0F060606060606060606060200000000060F0F060041A7D990B>33 -D<60C0F1E0F9F068D008100810081010201020204040800C0B7F9913>I<60F0F8680808 -0810102040050B7D990B>39 D<00800100020004000C0008001800300030003000600060 -0060006000E000E000E000E000E000E000E000E000E000E0006000600060006000300030 -003000180008000C00040002000100008009267D9B0F>I<800040002000100018000800 -0C0006000600060003000300030003000380038003800380038003800380038003800380 -03000300030003000600060006000C0008001800100020004000800009267E9B0F>I<60 -F0F07010101020204040040B7D830B>44 DI<60F0F06004047D -830B>I<0004000C00180018001800300030003000600060006000C000C000C001800180 -01800300030003000600060006000C000C000C0018001800180030003000300060006000 -6000C000C0000E257E9B13>I<07E01C38381C300C700E60066006E007E007E007E007E0 -07E007E007E007E007E00760066006700E300C381C1C3807E010187F9713>I<03000700 -FF0007000700070007000700070007000700070007000700070007000700070007000700 -0700070007007FF80D187D9713>I<0F80106020304038803CC01CE01C401C003C003800 -380070006000C001800100020004040804100430083FF87FF8FFF80E187E9713>I<07E0 -1838201C601E700E201E001E001C001C0038007007E00038001C000E000F000FE00FE00F -C00F400E601C183807E010187F9713>I<001800180038007800F800B801380238023804 -3808381838103820384038C038FFFF00380038003800380038003803FF10187F9713>I< -30183FF03FE03F80200020002000200020002FC03060203000380018001C001C401CE01C -E01C80184038403030E00F800E187E9713>I<01F807040C06180E300E300070006000E0 -00E3E0E418E80CF00EE006E007E007E007600760077006300E180C0C3807E010187F9713 ->I<40007FFF7FFE7FFE4004800880108010002000400040008001800100030003000700 -060006000E000E000E000E000E00040010197E9813>I<07E01818300C20066006600670 -06780C3E181F3007C003E00CF8307C601E600FC007C003C003C00360022004181807E010 -187F9713>I<07E01C303018700C600EE006E006E007E007E0076007700F3017182707C7 -00070006000E000C700C7018603030600F8010187F9713>I<60F0F06000000000000000 -0060F0F06004107D8F0B>I<60F0F060000000000000000060F0F0701010102020404004 -177D8F0B>I61 D<1FC020604030C038E038E0380038007000E0 -018001000300020002000200020002000200000000000000000006000F000F0006000D1A -7E9912>63 D<000C0000000C0000000C0000001E0000001E0000002F0000002700000027 -00000043800000438000004380000081C0000081C0000181E0000100E0000100E00003FF -F000020070000200700004003800040038000400380008001C0008001C003C001E00FF00 -FFC01A1A7F991D>65 DI<003F0201C0C603002E0E001E1C -000E1C0006380006780002700002700002F00000F00000F00000F00000F00000F0000070 -00027000027800023800041C00041C00080E000803003001C0C0003F00171A7E991C>I< -FFFF80000E00E0000E0070000E0038000E001C000E000E000E000E000E0007000E000700 -0E0007800E0007800E0007800E0007800E0007800E0007800E0007800E0007800E000700 -0E0007000E000F000E000E000E001C000E001C000E0078000E00E000FFFF8000191A7F99 -1D>III<003F020001C0C6 -0003002E000E001E001C000E001C00060038000600780002007000020070000200F00000 -00F0000000F0000000F0000000F0000000F001FFC070000E0070000E0078000E0038000E -001C000E001C000E000E000E000300160001C06600003F82001A1A7E991E>III<0FFE007000700070007000700070 -00700070007000700070007000700070007000700070007000704070E070E07040E061C0 -1F000F1A7E9914>IIIII<007F000001 -C1C000070070000E0038001C001C003C001E0038000E0078000F0070000700F0000780F0 -000780F0000780F0000780F0000780F0000780F0000780F000078078000F0078000F0038 -000E003C001E001C001C000E0038000700700001C1C000007F0000191A7E991E>II<007F000001C1C000070070000E0038001C001C003C001E0038 -000E0078000F0070000700F0000780F0000780F0000780F0000780F0000780F0000780F0 -000780F00007807000070078000F0038000E003C1C1E001C221C000E4138000741F00001 -E1C000007F80800000C0800000C0800000E18000007F0000007F0000003E0000001C0019 -217E991E>II<0FC21836200E6006C006C002C002C002E00070007E003FE01FF803 -FC007E000E00070003800380038003C002C006E004D81887E0101A7E9915>I<7FFFFF00 -701C0700401C0100401C0100C01C0180801C0080801C0080801C0080001C0000001C0000 -001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000 -001C0000001C0000001C0000001C0000001C0000001C000003FFE000191A7F991C>IIII -II91 D<2040204040804080810081008100E1C0F1E0F1E060C00B -0B7A9913>II<1FC000387000383800101C00001C00001C0003FC001E -1C00381C00701C00E01C00E01C80E01C80E03C80705F801F8F0011107F8F13>97 -DI<07F81C1C381C70087000E000E000E000E000E000E000 -7000700438081C1807E00E107F8F11>I<003F0000070000070000070000070000070000 -070000070000070000070003E7000C1700180F00300700700700E00700E00700E00700E0 -0700E00700E00700600700700700380F001C370007C7E0131A7F9915>I<07C01C303018 -7018600CE00CFFFCE000E000E000E0006000700438081C1807E00E107F8F11>I<01F007 -180E381C101C001C001C001C001C001C00FFC01C001C001C001C001C001C001C001C001C -001C001C001C001C001C00FF800D1A80990C>I<0FCF0018718030300070380070380070 -38007038003030001860002FC0006000006000007000003FF0003FFC001FFE00600F00C0 -0300C00300C00300C00300600600381C0007E00011187F8F13>II<183C3C18000000000000FC1C1C1C1C1C1C1C1C1C1C1C1C1C1CFF081A80990A>I< -018003C003C001800000000000000000000000000FC001C001C001C001C001C001C001C0 -01C001C001C001C001C001C001C001C001C001C001C041C0E180E3007E000A2182990C> -II -II< -FC7C001D87001E03801E03801C03801C03801C03801C03801C03801C03801C03801C0380 -1C03801C03801C0380FF9FF01410808F15>I<07E01C38300C700E6006E007E007E007E0 -07E007E0076006700E381C1C3807E010107F8F13>II<03E1000C1300180B0030 -0F00700700E00700E00700E00700E00700E00700E00700700700700700380F001C370007 -C700000700000700000700000700000700000700003FE013177F8F14>II<1F2060 -E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F800C107F8F0F>I< -0800080008000800180018003800FFC03800380038003800380038003800380038203820 -3820382018201C4007800B177F960F>II< -FF0F803C07001C06001C04001C04000E08000E080007100007100007100003A00003A000 -01C00001C00001C00000800011107F8F14>II -IIIII -E /Ft 89 127 df<60F87E3F0708057C9614>18 D<60F0F0F0F0F0F0F0F0F0F0F0F0F060 -0000000060F0F0600417789614>33 DI<071C00071C00071C00071C00071C00FFFF80FFFF807FFF800E3800 -0E38000E38000E38000E38000E38000E38007FFF80FFFF80FFFF801C70001C70001C7000 -1C70001C700011177F9614>I<00800180018007E01FF039BC619CC18EC18EC18EE18471 -807F801FE00FF001F8019C018E4186E186E186E186718C39B81FF00FC00180018000800F -1D7E9914>I<3806007C0E006C0E00EE1C00EE1C00EE3800EE38006C38007C7000387000 -00700000E00000E00001C00001C00001C000038000038000070000070E00071F000E1B00 -0E3B800E3B801C3B801C3B80381B00381F00180E00111D7F9914>I<60F0F87818181830 -3060C080050C789614>39 D<0180038006000C001C0018003800700070007000E000E000 -E000E000E000E000E000E000E000700070007000380018001C000C00060003800180091D -799914>I<80C0603038181C0E0E0E0707070707070707070E0E0E1C18383060C080081D -7C9914>I<038003800380638CF39E7FFC3FF80FE00FE03FF87FFCF39E638C0380038003 -800F107E9214>I<01C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FF -FF8001C00001C00001C00001C00001C00001C00001C00011117F9314>I<70F8FCFC7C0C -1830E0C0060A798414>II<70F8F8F8700505798414>I<00 -06000E000E001C001C003800380070007000E000E001C001C0038003800380070007000E -000E001C001C003800380070007000E000E000C0000F1D7E9914>I<07C00FE01C703838 -3018701C701CE00EE00EE00EE00EE00EE00EE00EE00EE00E701C701C383838381C700FE0 -07C00F177E9614>I<0300030007000F003F00F700470007000700070007000700070007 -0007000700070007000700070007007FF07FF00C177C9614>I<0FC01FF03838701CE00E -E00EE00E400E000E001C001C00380030007000E001C0030006000C00180E300E7FFE7FFE -0F177E9614>I<0FC01FF03838701C701C201C001C0018003800700FE00FF00038001C00 -0E000E400EE00EE00E701C78383FF00FC00F177E9614>I<00780000F80001B80001B800 -0338000338000638000E38000C38001C3800383800303800703800E03800FFFF80FFFF80 -00380000380000380000380000380001FF0001FF0011177F9614>I<7FFC7FFC70007000 -7000700070007000700077C07FF07838601C000C000E000E400EE00EE01C601C78783FF0 -0FC00F177E9614>I<01F007F80E1C1C1C381C300070007000E000E7C0EFF0F838F01CF0 -0CE00EE00E600E700E700C381C1C380FF007C00F177E9614>II<0FE03FF8783C701CE00EE00EE00EE00E701C1EF003801FF0383870 -1CE00EE00EE00EE00EF01E701C38381FF007C00F177E9614>I<07C01FE038307038601C -E01CE00CE00EE00E601E701E383E1FEE07CE000E001C001C001C7038703070E03FC01F00 -0F177E9614>I<70F8F8F87000000000000070F8F8F8700510798F14>I<70F8F8F8700000 -0000000060F0F8F878183070E0800515798F14>I<0006001E003E00F801F003C00F801F -003C00F800F000F8003C001F000F8003C001F000F8003E001E00060F157E9514>III<1FE03FF8701CE00EE00E400E003C007000E001C003800380038003 -800300000000000000000003000780078003000F177E9614>I<01E007F00E38181C38FC -71FC731E771EEE0EEE0EEE0EEE0EEE0EEE0EEE0E771C731871F038E018060E1E07F801F0 -0F177E9614>I<01C00003E00003E0000360000360000770000770000770000770000630 -000E38000E38000E38000E38001C1C001FFC001FFC001C1C001C1C00380E00380E00FE3F -80FE3F8011177F9614>II<01F18007FF800E1F -801C0780380780700380700380700380E00000E00000E00000E00000E00000E00000E000 -007003807003807003803807001C07000E0E0007FC0001F00011177F9614>II< -FFFF00FFFF003807003807003807003807003800003800003838003838003FF8003FF800 -383800383800380000380000380000380380380380380380380380FFFF80FFFF8011177F -9614>II<03C60FFE1C3E181E381E700E700E600EE000E000E000E000E07FE07F -E00E600E700E700E381E181E1C3E0FFE03CE10177F9614>III<07FC07FC00700070007000700070007000700070007000700070 -00700070007000700070E070E070F0E07FC01F000E177D9614>IIIII<1FF07FFC783C701CE00EE00EE00EE00E -E00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00E701C783C7FFC1FF00F177E9614> -II<1FF07FFC783C701CE00EE00EE00EE00EE00E -E00EE00EE00EE00EE00EE00EE00EE00EE38EE1CE71DC78FC7FFC1FF000780038003C001C -001E0F1C7E9614>II<0FCC1FFC307C603CE01CE01CE01CE00070007E003FE00F -F001F8001C001E000E600EE00EE00EF01CF838FFF0C7E00F177E9614>I<7FFF80FFFF80 -E1C380E1C380E1C380E1C38001C00001C00001C00001C00001C00001C00001C00001C000 -01C00001C00001C00001C00001C00001C00001C0000FF8000FF80011177F9614>II87 D<7E3E007E3E001C3C001E38000E78000F700007700007E00003E00003C0 -0001C00003C00003E00003E0000770000770000E78000E38001C3C001C1C003C1E00FE3F -80FE3F8011177F9614>II<7FFEFFFEE01CE01CE038E038007000E000E001C001 -C00380070007000E000E001C00380E380E700E700EFFFEFFFE0F177E9614>IIII<04001F007FC0F1E0E0E00B057C9614>I<1FC0007FF000707800 -201800001C00001C0007FC001FFC003C1C00701C00E01C00E01C00E01C00707C003FFF80 -0F8F8011107E8F14>97 DI<03F80FFE1C0E380470006000E000E000E000E00060 -007000380E1C1E0FFC03F00F107E8F14>I<007E00007E00000E00000E00000E00000E00 -000E0007CE000FFE001C3E00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00 -700E00301E00383E001FEFC007CFC012177F9614>I<07E00FF01C38301C700CE00EE00E -FFFEFFFEE00060007000380E1C1E0FFC03F00F107E8F14>I<00FC01FE038E0704070007 -0007007FFEFFFE070007000700070007000700070007000700070007000700FFF8FFF80F -177F9614>I<07CF001FFF80383B80301800701C00701C00701C003018003838003FF000 -37C0007000007000003FF8001FFC003FFE00700F00E00380E00380E00380E00380700700 -3C1E001FFC0007F00011197F8F14>II<06000F000F0006000000000000000000 -FF00FF00070007000700070007000700070007000700070007000700FFF8FFF80D187C97 -14>I<006000F000F0006000000000000000001FF01FF000700070007000700070007000 -700070007000700070007000700070007000700070007040E0E0C07F803F000C207E9714 ->IIIII<07C01FF03C78701C701CE0 -0EE00EE00EE00EE00EE00E701C783C3C781FF007C00F107E8F14>II<03 -E7000FF7001C1F00300F00700F00E00700E00700E00700E00700E00700E00700700F0030 -0F001C3F000FF70007C700000700000700000700000700000700000700003FE0003FE013 -187F8F14>II<0FD83FF86038C038C038F0 -007F803FF007F8001C6006E006F006F81CFFF8CFE00F107E8F14>I<06000E000E000E00 -0E007FFCFFFC0E000E000E000E000E000E000E000E000E0E0E0E0E0E0E1C07F801F00F15 -7F9414>IIII<7E3F007E3F001E3C000E -780007700007E00003E00001C00003C00003E0000770000E78000E38001C1C00FE3F80FE -3F8011107F8F14>II<3FFF7FFF700E701C7038007000E001C003800700 -0E001C0738077007FFFFFFFF10107F8F14>I124 D<1C103F38E7E041C00D047D9614>126 -D E /Fu 82 127 df18 D<60F0F0F0F0F0F0F0F0F0F0F0F0F0 -F0F0600000000060F0F0600419779816>33 DI<038700038700038700038700038700038700FFFFE0FFFFE0 -7FFFE0070E00070E00070E000E1C000E1C000E1C000E1C007FFFE0FFFFE0FFFFE01C3800 -1C38001C38001C38001C38001C380013197F9816>I<00C00001C00001C00001C00007F0 -001FFC003FFE007DCF0071C780E1C380E1C780E1C780F1C30079C0003FC0001FF00007FC -0001FE0001CF0001C70061C380F1C380F1C380E1C38071C70079DF003FFE001FF80007E0 -0001C00001C00000C00011207E9C16>I<30787C3C1C1C1C1C3878F0E040060D789816> -39 D<00E001E0038007000E001C001C0038003800700070007000E000E000E000E000E0 -00E000E000E000E000700070007000380038001C001C000E000700038001E000E00B217A -9C16>II<0380038003800380E38EF39EFFFE3FF80FE00FE03FF8FFFEF39EE38E038003 -80038003800F127D9516>I<00E00000E00000E00000E00000E00000E00000E00000E000 -FFFFE0FFFFE0FFFFE000E00000E00000E00000E00000E00000E00000E00000E00013137F -9516>I<387C7E7E3E0E1E1C78F060070B798416>I -I<70F8F8F8700505788416>I<000180000380000380000700000700000E00000E00001C -00001C0000380000380000700000700000E00000E00001C00001C0000380000380000700 -000700000E00000E00001C00001C0000380000380000700000700000E00000E00000C000 -0011207E9C16>I<03E0000FF8001FFC001E3C00380E00780F00700700700700E00380E0 -0380E00380E00380E00380E00380E00380E00380F00780700700700700780F003C1E001E -3C001FFC000FF80003E00011197E9816>I<0300070007000F001F00FF00FF00E7000700 -0700070007000700070007000700070007000700070007000700FFF8FFF8FFF80D197B98 -16>I<07E0001FF8003FFC00783E00E00700F00780F00380600380000380000380000700 -000700000E00001C0000380000700000E00001C0000380000F00001E03803803807FFF80 -FFFF807FFF8011197E9816>I<007C0000FC0000DC0001DC00039C00039C00071C000F1C -000E1C001E1C003C1C00381C00781C00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C -00001C00001C0001FFC001FFC001FFC013197F9816>52 D<03E0000FF8001FFC003C1E00 -700E00700700E00700E00780E00380E00380E00780700780780F803FFF801FFB800FE380 -000700000700300700780E00781C00707C003FF8001FE0000F800011197E9816>57 -D<70F8F8F870000000000000000070F8F8F8700512789116>I<000180000780001F8000 -3E0000F80001F00007C0000F80003E0000FC0000F00000FC00003E00000F800007C00001 -F00000F800003E00001F8000078000018011157E9616>60 DII<0FF0003FFE007FFF00 -F00F80F00380F00380600780001F00003E0000780000F00001C00001C00001C00001C000 -01C00001800000000000000000000000000001800003C00003C00001800011197E9816> -I<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C -00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007E0FC0FF1F -E07E0FC013197F9816>65 D<7FF800FFFE007FFF001C07001C07801C03801C03801C0380 -1C03801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C0 -1C03C01C07807FFF80FFFF007FFC0012197F9816>I<01F18007FB800FFF801F0F803C07 -80380380700380700380F00000E00000E00000E00000E00000E00000E00000E00000F000 -007003807003803803803C07001F0F000FFE0007FC0001F00011197E9816>I<7FF800FF -FE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C -00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007FF80013 -19809816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C00 -1C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E0 -7FFFE0FFFFE07FFFE013197F9816>I<7FFFE0FFFFE07FFFE01C00E01C00E01C00E01C00 -E01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00001C00 -001C00001C00001C00007F8000FFC0007F800013197F9816>I<01F18007FB800FFF801F -0F803C0780380380700380700380F00000E00000E00000E00000E00000E01FC0E01FE0E0 -1FC0F003807003807007803807803C07801E0F800FFF8007FB8001F38013197F9816>I< -7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC0 -1FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF8 -7F07F01519809816>I<7FFCFFFE7FFC0380038003800380038003800380038003800380 -0380038003800380038003800380038003807FFCFFFE7FFC0F197D9816>I<7F0FE0FF8F -F07F0FE01C07801C0F001C0E001C1C001C3C001C78001CF0001CE0001DF0001FF0001FF8 -001F38001E1C001C1C001C0E001C0E001C07001C07001C03807F07E0FF8FF07F07E01419 -809816>75 DI<60 +C0F1E0F9F068D008100810081010201020204040800C0B7F9913>34 +D<60F0F86808080810102040050B7D990B>39 D<00800100020004000C00080018003000 +300030006000600060006000E000E000E000E000E000E000E000E000E000E00060006000 +60006000300030003000180008000C00040002000100008009267D9B0F>I<8000400020 +001000180008000C00060006000600030003000300030003800380038003800380038003 +8003800380038003000300030003000600060006000C0008001800100020004000800009 +267E9B0F>I<60F0F07010101020204040040B7D830B>44 DI<60 +F0F06004047D830B>I<07E01C38381C300C700E60066006E007E007E007E007E007E007 +E007E007E007E00760066006700E300C381C1C3807E010187F9713>48 +D<03000700FF000700070007000700070007000700070007000700070007000700070007 +00070007000700070007007FF80D187D9713>I<0F80106020304038803CC01CE01C401C +003C003800380070006000C001800100020004040804100430083FF87FF8FFF80E187E97 +13>I<07E01838201C601E700E201E001E001C001C0038007007E00038001C000E000F00 +0FE00FE00FC00F400E601C183807E010187F9713>I<001800180038007800F800B80138 +02380238043808381838103820384038C038FFFF00380038003800380038003803FF1018 +7F9713>I<30183FF03FE03F80200020002000200020002FC03060203000380018001C00 +1C401CE01CE01C80184038403030E00F800E187E9713>I<01F807040C06180E300E3000 +70006000E000E3E0E418E80CF00EE006E007E007E007600760077006300E180C0C3807E0 +10187F9713>I<40007FFF7FFE7FFE400480088010801000200040004000800180010003 +0003000700060006000E000E000E000E000E00040010197E9813>I<07E01818300C2006 +600660067006780C3E181F3007C003E00CF8307C601E600FC007C003C003C00360022004 +181807E010187F9713>I<07E01C303018700C600EE006E006E007E007E0076007700F30 +17182707C700070006000E000C700C7018603030600F8010187F9713>I<60F0F0600000 +00000000000060F0F06004107D8F0B>I<007F00000180C0000600300008000800100004 +00203E020020E1020041C081004380710083807080870070808700708087007080870070 +808700708087007080838070804380708041C0F10020E13100203E1E0010000000080000 +000600038001803E00007FE000191A7E991E>64 D66 +D<003F0201C0C603002E0E001E1C000E1C0006380006780002700002700002F00000F000 +00F00000F00000F00000F000007000027000027800023800041C00041C00080E00080300 +3001C0C0003F00171A7E991C>II70 +D<003F020001C0C60003002E000E001E001C000E001C0006003800060078000200700002 +0070000200F0000000F0000000F0000000F0000000F0000000F001FFC070000E0070000E +0078000E0038000E001C000E001C000E000E000E000300160001C06600003F82001A1A7E +991E>III<0FFE00700070 +007000700070007000700070007000700070007000700070007000700070007000704070 +E070E07040E061C01F000F1A7E9914>I76 +DII<007F000001C1C000070070000E0038001C001C003C001E0038000E0078 +000F0070000700F0000780F0000780F0000780F0000780F0000780F0000780F0000780F0 +00078078000F0078000F0038000E003C001E001C001C000E0038000700700001C1C00000 +7F0000191A7E991E>II<0FC21836200E6006C006C002C0 +02C002E00070007E003FE01FF803FC007E000E00070003800380038003C002C006E004D8 +1887E0101A7E9915>83 D<7FFFFF00701C0700401C0100401C0100C01C0180801C008080 +1C0080801C0080001C0000001C0000001C0000001C0000001C0000001C0000001C000000 +1C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C000000 +1C000003FFE000191A7F991C>II87 DI91 D<20402040408040808100810081 +00E1C0F1E0F1E060C00B0B7A9913>II<1FC000387000383800101C00 +001C00001C0003FC001E1C00381C00701C00E01C00E01C80E01C80E03C80705F801F8F00 +11107F8F13>97 DI<07F81C1C381C70087000E000E000E0 +00E000E000E0007000700438081C1807E00E107F8F11>I<003F00000700000700000700 +00070000070000070000070000070000070003E7000C1700180F00300700700700E00700 +E00700E00700E00700E00700E00700600700700700380F001C370007C7E0131A7F9915> +I<07C01C3030187018600CE00CFFFCE000E000E000E0006000700438081C1807E00E107F +8F11>I<01F007180E381C101C001C001C001C001C001C00FFC01C001C001C001C001C00 +1C001C001C001C001C001C001C001C001C00FF800D1A80990C>I<0FCF00187180303000 +7038007038007038007038003030001860002FC0006000006000007000003FF0003FFC00 +1FFE00600F00C00300C00300C00300C00300600600381C0007E00011187F8F13>II<183C3C18000000000000FC1C1C1C1C1C1C1C1C1C1C1C1C1C1C +FF081A80990A>I<018003C003C001800000000000000000000000000FC001C001C001C0 +01C001C001C001C001C001C001C001C001C001C001C001C001C001C001C041C0E180E300 +7E000A2182990C>IIIII<07E01C38300C700E60 +06E007E007E007E007E007E0076006700E381C1C3807E010107F8F13>II<03E1 +000C1300180B00300F00700700E00700E00700E00700E00700E00700E007007007007007 +00380F001C370007C700000700000700000700000700000700000700003FE013177F8F14 +>II<1F2060E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F +800C107F8F0F>I<0800080008000800180018003800FFC0380038003800380038003800 +38003800382038203820382018201C4007800B177F960F>IIIIII E /Ft 8 56 df<1F00318060C04040C060C060C060C060 +C060C060C060C060404060C031801F000B107F8F0F>48 D<187898181818181818181818 +181818FF08107D8F0F>I<1F00618040C08060C0600060006000C00180030006000C0010 +2020207FC0FFC00B107F8F0F>I<1F00218060C060C000C0008001001F00008000400060 +C060C060804060801F000B107F8F0F>I<01800180038005800D801980118021804180C1 +80FFE001800180018001800FE00B107F8F0F>I<20C03F802E002000200020002F003080 +2040006000600060C06080C061801F000B107F8F0F>I<0780184030C060C06000C000CF +00F080E040C060C060C060406060C030801F000B107F8F0F>I<40007FF07FE080408040 +00800100020002000600040004000C000C000C000C000C000C117F900F>I +E /Fu 84 125 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C000 +0E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C000 +0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000 +0E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C0 +0E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C0 +0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 +7F87F8151D809C17>I<003F07E00001C09C18000380F018000701F03C000E01E03C000E +00E018000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00 +E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E0 +1C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C +000E00E01C007FC7FCFF80211D809C23>14 D18 +D<0E0E1E3870E0800707779C15>I<60F0F0F0F0F0F0F060606060606060606060606060 +000000000060F0F060041E7C9D0C>33 D<6060F0F0F8F868680808080808081010101020 +20404080800D0C7F9C15>I<60F0F8680808081010204080050C7C9C0C>39 +D<00800100020006000C000C00180018003000300030006000600060006000E000E000E0 +00E000E000E000E000E000E000E000E000E0006000600060006000300030003000180018 +000C000C000600020001000080092A7C9E10>I<8000400020003000180018000C000C00 +060006000600030003000300030003800380038003800380038003800380038003800380 +038003000300030003000600060006000C000C00180018003000200040008000092A7E9E +10>I<60F0F0701010101020204080040C7C830C>44 DI<60F0F0 +6004047C830C>I<00010003000600060006000C000C000C001800180018003000300030 +0060006000C000C000C0018001800180030003000300060006000C000C000C0018001800 +1800300030003000600060006000C000C00010297E9E15>I<03C00C301818300C300C70 +0E60066006E007E007E007E007E007E007E007E007E007E007E007E007E0076006600670 +0E300C300C18180C3007E0101D7E9B15>I<010007003F00C70007000700070007000700 +070007000700070007000700070007000700070007000700070007000700070007000700 +FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E00 +1C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I< +07E01830201C201C781E780E781E381E001C001C00180030006007C00030001C001C000E +000F000F700FF80FF80FF80FF00E401C201C183007C0101D7E9B15>I<000C00000C0000 +1C00003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C0010 +1C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C0000 +1C0001FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E02C30 +3018301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D +7E9B15>I<00F0030C04040C0E181E301E300C700070006000E3E0E430E818F00CF00EE0 +06E007E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<4000 +007FFF807FFF007FFF004002008004008004008008000010000010000020000060000040 +0000C00000C00001C0000180000180000380000380000380000380000780000780000780 +00078000078000078000030000111D7E9B15>I<03E00C301008200C2006600660067006 +70067C0C3E183FB01FE007F007F818FC307E601E600FC007C003C003C003C00360026004 +300C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E0 +07E0076007700F300F18170C2707C700060006000E300C780C78187018203010C00F8010 +1D7E9B15>I<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F0600000 +000000000000000060F0F0701010101020204080041A7C910C>I61 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C000 +8001800100010001000100010001000000000000000000000003000780078003000F1D7E +9C14>63 D<000600000006000000060000000F0000000F0000000F000000178000001780 +000037C0000023C0000023C0000043E0000041E0000041E0000080F0000080F0000080F0 +00010078000100780001FFF80002003C0002003C0002003C0004001E0004001E000C001F +000C000F001E001F00FF00FFF01C1D7F9C1F>65 DI<001F8080 +00E0618001801980070007800E0003801C0003801C000180380001807800008078000080 +70000080F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000 +700000807800008078000080380000801C0001001C0001000E0002000700040001800800 +00E03000001FC000191E7E9C1E>IIII<001F808000E06180 +01801980070007800E0003801C0003801C00018038000180780000807800008070000080 +F0000000F0000000F0000000F0000000F0000000F0000000F000FFF0F0000F8070000780 +7800078078000780380007801C0007801C0007800E00078007000B800180118000E06080 +001F80001C1E7E9C21>III<07FF80007C00003C00003C00003C00003C00003C00003C +00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C +00003C00703C00F83C00F83C00F8380070780040700030E0000F8000111D7F9B15>IIIII<003F800000E0E0000380380007001C000E000E001C0007003C00078038 +000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F0 +0001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E +000E0007001C000380380000E0E000003F80001B1E7E9C20>II<003F800000E0E0000380380007001C000E000E001C0007003C0007 +8038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001 +E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0E07801C1107 +000E208E0007205C0003A0780000F0E020003FE0200000602000003060000038E000003F +C000003FC000001F8000000F001B257E9C20>II<07 +E0801C1980300580300380600180E00180E00080E00080E00080F00000F800007C00007F +C0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0C0 +0180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0 +400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F0000 +000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 +000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>III +III91 +D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>II<1FC000307000783800781C00301C00001C00001C0001FC000F1C0038 +1C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 +DI<03F80C0C181E301E700C6000E0 +00E000E000E000E000E00060007002300218040C1803E00F127F9112>I<001F80000380 +00038000038000038000038000038000038000038000038000038003F3800E0B80180780 +300380700380600380E00380E00380E00380E00380E00380E00380600380700380300380 +1807800E1B8003E3F0141D7F9C17>I<07E00C301818300C700E6006E006FFFEE000E000 +E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E +000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E +000E000E000E007FE00F1D809C0D>I<00038007C4C01C78C0383880301800701C00701C +00701C00701C003018003838001C700027C0002000002000003000003FF8001FFF001FFF +802003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C00180000000000000000 +00000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C +001C001C00FF80091D7F9C0C>I<00C001E001E000C00000000000000000000000000000 +07E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 +00E000E000E060E0F0C0F1C061803E000B25839C0D>IIIII<03F0000E1C00180600300300700380600180E001 +C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212 +7F9115>II<03E0800E1980180580380780700380700380 +E00380E00380E00380E00380E00380E003807003807003803807801807800E1B8003E380 +000380000380000380000380000380000380000380001FF0141A7F9116>II<1F9020704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D060 +8FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C +001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>IIIIII<7FFC70386038407040F040E041C003C003 +8007000F040E041C043C0C380870087038FFF80E127F9112>III E /Fv 89 127 df18 +D<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F0600419779816>33 +DI<038700038700 +038700038700038700038700FFFFE0FFFFE07FFFE0070E00070E00070E000E1C000E1C00 +0E1C000E1C007FFFE0FFFFE0FFFFE01C38001C38001C38001C38001C38001C380013197F +9816>I<00C00001C00001C00001C00007F0001FFC003FFE007DCF0071C780E1C380E1C7 +80E1C780F1C30079C0003FC0001FF00007FC0001FE0001CF0001C70061C380F1C380F1C3 +80E1C38071C70079DF003FFE001FF80007E00001C00001C00000C00011207E9C16>I<38 +01807C03807C0380EE0700EE0700EE0E00EE0E00EE0E00EE1C007C1C007C380038380000 +700000700000700000E00000E00001C00001C00001C0000380000383800707C00707C00E +0EE00E0EE00E0EE01C0EE01C0EE03807C03807C018038013207F9C16>I<30787C3C1C1C +1C1C3878F0E040060D789816>39 D<00E001E0038007000E001C001C0038003800700070 +007000E000E000E000E000E000E000E000E000E000700070007000380038001C001C000E +000700038001E000E00B217A9C16>II<0380038003800380E38EF39EFFFE3FF80FE00F +E03FF8FFFEF39EE38E03800380038003800F127D9516>I<00E00000E00000E00000E000 +00E00000E00000E00000E000FFFFE0FFFFE0FFFFE000E00000E00000E00000E00000E000 +00E00000E00000E00013137F9516>I<387C7E7E3E0E1E1C78F060070B798416>II<70F8F8F8700505788416>I<000180000380000380000700 +000700000E00000E00001C00001C0000380000380000700000700000E00000E00001C000 +01C0000380000380000700000700000E00000E00001C00001C0000380000380000700000 +700000E00000E00000C0000011207E9C16>I<03E0000FF8001FFC001E3C00380E00780F +00700700700700E00380E00380E00380E00380E00380E00380E00380E00380F007807007 +00700700780F003C1E001E3C001FFC000FF80003E00011197E9816>I<0300070007000F +001F00FF00FF00E700070007000700070007000700070007000700070007000700070007 +00FFF8FFF8FFF80D197B9816>I<07E0001FF8003FFC00783E00E00700F00780F0038060 +0380000380000380000700000700000E00001C0000380000700000E00001C0000380000F +00001E03803803807FFF80FFFF807FFF8011197E9816>I<07E0001FF8003FFC00781E00 +780700300700000700000700000E00003E0007FC0007F00007FC00001E00000700000300 +000380000380600380F00380E00700781E003FFC001FF80007E00011197E9816>I<007C +0000FC0000DC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C00781C +00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FFC001FF +C013197F9816>I<3FFE007FFE007FFE0070000070000070000070000070000070000070 +000077F0007FFC007FFE00780F00300700000380000380600380F00380F00380E0070078 +1E003FFC001FF80007E00011197E9816>I<00F80003FC0007FE000F07001C0F00380F00 +780600700000700000E3F800EFFC00FFFE00F80F00F00700F00380E00380E00380700380 +7003807007803807003C1E001FFC000FF80003E00011197E9816>II<07F0001FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001F +FC0007F0001FFC003C1E00700700F00780E00380E00380E00380F007807007007C1F003F +FE001FFC0007F00011197E9816>I<03E0000FF8001FFC003C1E00700E00700700E00700 +E00780E00380E00380E00780700780780F803FFF801FFB800FE380000700000700300700 +780E00781C00707C003FF8001FE0000F800011197E9816>I<70F8F8F870000000000000 +000070F8F8F8700512789116>I<387C7C7C38000000000000000038787C7C3C1C1C3870 +F0400618799116>I<000180000780001F80003E0000F80001F00007C0000F80003E0000 +FC0000F00000FC00003E00000F800007C00001F00000F800003E00001F80000780000180 +11157E9616>III<0FF0003FFE007FFF00F00F80F00380F00380600780001F00003E00 +00780000F00001C00001C00001C00001C00001C000018000000000000000000000000000 +01800003C00003C00001800011197E9816>I<00F80003FC0007FE000F07001C3B8038FF +8079FF8073C7C07383C0E701C0E701C0E701C0E701C0E701C0E701C0E701C073838073C7 +8079FF0038FE001C38000F03C007FFC003FF0000FC0012197E9816>I<00E00001F00001 +F00001B00001B00003B80003B80003B800031800071C00071C00071C00071C00071C000E +0E000E0E000FFE000FFE001FFF001C07001C07001C07007E0FC0FF1FE07E0FC013197F98 +16>I<7FF800FFFE007FFF001C07001C07801C03801C03801C03801C03801C07001FFF00 +1FFE001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C01C03C01C07807FFF80 +FFFF007FFC0012197F9816>I<01F18007FB800FFF801F0F803C07803803807003807003 +80F00000E00000E00000E00000E00000E00000E00000E00000F000007003807003803803 +803C07001F0F000FFE0007FC0001F00011197E9816>I<7FF800FFFE007FFF001C0F001C +07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C +00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007FF8001319809816>I<7FFFC0 +FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC001FFC00 +1FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFFE07FFFE0 +13197F9816>I<7FFFE0FFFFE07FFFE01C00E01C00E01C00E01C00E01C00001C00001C1C +001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00001C00001C00001C00001C00 +007F8000FFC0007F800013197F9816>I<01F18007FB800FFF801F0F803C078038038070 +0380700380F00000E00000E00000E00000E00000E01FC0E01FE0E01FC0F0038070038070 +07803807803C07801E0F800FFF8007FB8001F38013197F9816>I<7F07F0FF8FF87F07F0 +1C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C0 +1C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F01519809816> +I<7FFCFFFE7FFC0380038003800380038003800380038003800380038003800380038003 +8003800380038003807FFCFFFE7FFC0F197D9816>I<01FF0003FF8001FF00001C00001C +00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C +00001C00001C00601C00F01C00F038007FF8007FF0001FC00011197E9816>I<7F0FE0FF +8FF07F0FE01C07801C0F001C0E001C1C001C3C001C78001CF0001CE0001DF0001FF0001F +F8001F38001E1C001C1C001C0E001C0E001C07001C07001C03807F07E0FF8FF07F07E014 +19809816>III<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C0 1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C00E03800E0380070700 -07FF0003FE0000F8001519809816>II<7E03F0FF07F87E03F038 -00E03800E03800E03800E01C01C01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00C -D9800CD9800CD9800DDD800D8D800D8D800D8D80078F00078F000707001519809816>I< -7F1F807F3FC07F1F800E1E000E1C00071C0007380003B80003F00001F00001E00000E000 -01E00001F00003F00003B80007B800071C000F1C000E0E000E0E001C07007E0FC0FF1FE0 -7E0FC013197F9816>II<7FFF80FFFF80FFFF80E00700E00F00E0 -1E00E01C00003C0000780000700000F00001E00001C00003C0000780000700000F00001E -03801C03803C0380780380700380FFFF80FFFF80FFFF8011197E9816>IIII<03000F803FE0FDF8F07840100D -067C9816>I<081C3C7870E0E0E0E0F0F87830060D789B16>96 D<1FE0003FF0007FF800 -783C00300E00000E00000E0003FE001FFE003E0E00700E00E00E00E00E00E00E00783E00 -7FFFE03FE7E00F83E013127E9116>II<03F80FFC1FFE3C1E780C -7000E000E000E000E000E000F000700778073E0E1FFC0FF803F010127D9116>I<003F00 -003F00003F0000070000070000070000070003C7000FF7001FFF003C1F00780F00700700 -E00700E00700E00700E00700E00700E00700700F00780F003C1F001FFFE00FF7E007C7E0 -13197F9816>I<03F0000FFC001FFE003C0F00780700700380E00380FFFF80FFFF80FFFF -80E00000E000007003807803803E07801FFF0007FE0001F80011127E9116>I<001E0000 -7F0001FF8001C7800383000380000380007FFF00FFFF00FFFF0003800003800003800003 -80000380000380000380000380000380000380000380000380007FFC00FFFE007FFC0011 -197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E00380E001C1C00 -0FF8001FF0001BE0003800001800001FFC001FFF003FFF807003C0E000E0E000E0E000E0 -E000E07001C07C07C03FFF800FFE0003F800131C7F9116>II<03 -000780078003000000000000000000FF80FF80FF80038003800380038003800380038003 -800380038003800380FFFCFFFEFFFC0F1A7C9916>I<0030007800780030000000000000 -00000FF81FF80FF800380038003800380038003800380038003800380038003800380038 -003800380038003800386070F0F0FFE07FC03F800D237E9916>I<7E0000FE00007E0000 -0E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF000 -0FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F01419809816> -I<7FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001C00001C00001C0 -0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF -807FFF0011197E9816>II< -FC7800FDFC00FFFE001F0F001E07001C07001C07001C07001C07001C07001C07001C0700 -1C07001C07001C0700FF8FE0FF9FE0FF8FE013127F9116>I<03E0000FF8001FFC003C1E -00780F00700700E00380E00380E00380E00380E00380F00780700700780F003C1E001FFC -000FF80003E00011127E9116>II<03E3800FF380 -1FFB803E0F80780780700780E00380E00380E00380E00380E00380E00380700780780780 -3C1F801FFB800FF38003E380000380000380000380000380000380000380001FF0003FF8 -001FF0151B7F9116>I<7F0FC0FF3FE07F7FE007F04007C0000780000780000700000700 -000700000700000700000700000700000700007FFC00FFFC007FFC0013127F9116>I<0F -EC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81EFFFCFFF8C7E00F -127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF00070000070000 -07000007000007000007000007000007010007038007038007038007870003FE0001FC00 -00F80011177F9616>II<7F -1FC0FF9FE07F1FC01C07001C07000E0E000E0E000E0E00071C00071C00071C00071C0003 -B80003B80003B80001F00001F00000E00013127F9116>II<7F1FC07F3FC07F1FC00F1E00073C0003B80003F00001F0 -0000E00001E00001F00003B800073C00071C000E0E007F1FC0FF3FE07F1FC013127F9116 ->I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C00039C0003 -9C0003980001B80001B80000F00000F00000F00000E00000E00000E00001C00079C0007B -C0007F80007F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC0700780700F00701E00 -003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFFC0FFFFC0FFFFC0 -12127F9116>I124 D<1C303F78FFF8F7E061C00D057C9816>126 -D E /Fv 3 108 df<007F004003FFE0C00780F0C00E0019C01C0007C0380003C0780001 +07FF0003FE0000F8001519809816>I<7E03F0FF07F87E03F03800E03800E03800E03800 +E01C01C01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00CD9800CD9800CD9800DDD +800D8D800D8D800D8D80078F00078F000707001519809816>87 D<7F1F807F3FC07F1F80 +0E1E000E1C00071C0007380003B80003F00001F00001E00000E00001E00001F00003F000 +03B80007B800071C000F1C000E0E000E0E001C07007E0FC0FF1FE07E0FC013197F9816> +II<7FFF80FFFF80FFFF80E00700E00F00E01E00E01C00003C0000 +780000700000F00001E00001C00003C0000780000700000F00001E03801C03803C038078 +0380700380FFFF80FFFF80FFFF8011197E9816>IIII<03000F803FE0FDF8F07840100D067C9816>I<1FE0003F +F0007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00E00E00E00E00E0 +0E00783E007FFFE03FE7E00F83E013127E9116>97 DI<03F80FFC +1FFE3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC0FF803F010127D91 +16>I<003F00003F00003F0000070000070000070000070003C7000FF7001FFF003C1F00 +780F00700700E00700E00700E00700E00700E00700E00700700F00780F003C1F001FFFE0 +0FF7E007C7E013197F9816>I<03F0000FFC001FFE003C0F00780700700380E00380FFFF +80FFFF80FFFF80E00000E000007003807803803E07801FFF0007FE0001F80011127E9116 +>I<001E00007F0001FF8001C7800383000380000380007FFF00FFFF00FFFF0003800003 +80000380000380000380000380000380000380000380000380000380000380007FFC00FF +FE007FFC0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E00 +380E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF807003C0E000E0 +E000E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>II<03000780078003000000000000000000FF80FF80FF80038003800380038003 +800380038003800380038003800380FFFCFFFEFFFC0F1A7C9916>I<0030007800780030 +00000000000000000FF81FF80FF800380038003800380038003800380038003800380038 +003800380038003800380038003800386070F0F0FFE07FC03F800D237E9916>I<7E0000 +FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C00 +0E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F0 +1419809816>I<7FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001C0 +0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 +007FFF00FFFF807FFF0011197E9816>III<03E0000FF8 +001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F +003C1E001FFC000FF80003E00011127E9116>II< +03E3800FF3801FFB803E0F80780780700780E00380E00380E00380E00380E00380E00380 +7007807807803C1F801FFB800FF38003E380000380000380000380000380000380000380 +001FF0003FF8001FF0151B7F9116>I<7F0FC0FF3FE07F7FE007F04007C0000780000780 +000700000700000700000700000700000700000700000700007FFC00FFFC007FFC001312 +7F9116>I<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81EFF +FCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF00 +070000070000070000070000070000070000070000070100070380070380070380078700 +03FE0001FC0000F80011177F9616>II<7F1FC0FF9FE07F1FC01C07001C07000E0E000E0E000E0E00071C00071C0007 +1C00071C0003B80003B80003B80001F00001F00000E00013127F9116>II<7F1FC07F3FC07F1FC00F1E00073C0003B8 +0003F00001F00000E00001E00001F00003B800073C00071C000E0E007F1FC0FF3FE07F1F +C013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C0007 +1C00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E00001 +C00079C0007BC0007F80007F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC0700780 +700F00701E00003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFFC0 +FFFFC0FFFFC012127F9116>I124 D<1C303F78FFF8F7E061C00D057C9816>126 +D E /Fw 82 127 df18 +D<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8F870051C779B18>33 +D<4010E038F078E038E038E038E038E038E038E038E038E038E03860300D0E7B9C18>I< +030600078F00078F00078F00078F00078F00078F007FFFC0FFFFE0FFFFE07FFFC00F1E00 +0F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC01E3C001E3C001E3C00 +1E3C001E3C001E3C000C1800131C7E9B18>I<00C00001C00001C00001C00003F0000FFC +003FFE007DCF0071C700E1C380E1C780E1C780E1C780F1C00079C0003FC0001FE0000FF8 +0001FC0001DE0001CF0001C70061C380F1C380F1C380E1C380E1C70071C70079DE003FFE +001FF80007E00001C00001C00001C00000C00011247D9F18>I<387C7C7E3E0E0E0E1C1C +38F8F0C0070E789B18>39 D<007000F001E003C007800F001E001C003800380070007000 +70007000E000E000E000E000E000E000E000E0007000700070007000380038001C001E00 +0F00078003C001F000F000700C24799F18>I<6000F00078003C001E000F000780038001 +C001C000E000E000E000E00070007000700070007000700070007000E000E000E000E001 +C001C0038007800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001 +C00041C100F1C780FDDF807FFF001FFC0007F00007F0001FFC007FFF00FDDF80F1C78041 +C10001C00001C00001C00001C00011147D9718>I<00600000F00000F00000F00000F000 +00F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F000 +00F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF +C0FFFFE0FFFFE07FFFC013047E8F18>I<3078FCFC78300606778518>I<00030000078000 +0780000F80000F00001F00001E00001E00003E00003C00007C0000780000780000F80000 +F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F00001F00001E +00003E00003C00003C00007C0000780000F80000F00000F0000060000011247D9F18>I< +01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0 +E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C0700 +1F1F000FFE0007FC0001F000131C7E9B18>I<01800380038007800F803F80FF80FB8043 +8003800380038003800380038003800380038003800380038003800380038003807FFCFF +FE7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000 +E00000E00000E00001C00001C00003C0000780000F00001E00003C0000780000F00001E0 +0007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<001F00003F0000 +770000770000E70001E70001C7000387000787000707000E07001E07003C070038070078 +0700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700000700000700007FF000 +7FF0007FF0151C7F9B18>52 D<03F0000FFC001FFE003C0F00780780700380E001C0E001 +C0E001C0E001E0E001E07001E07803E03C0FE01FFFE00FFEE003F0E00000E00001C00001 +C00001C0300380780780780F00783E003FFC001FF00007C000131C7E9B18>57 +D<3078FCFC783000000000000000003078FCFC78300614779318>I<0000C00003E00007 +E0001FC0003F8000FE0001FC0007F0000FE0003F80007F0000FC0000FC00007F00003F80 +000FE00007F00001FC0000FE00003F80001FC00007E00003E00000C013187E9918>60 +D<7FFFC0FFFFE0FFFFE07FFFC00000000000000000000000007FFFC0FFFFE0FFFFE07FFF +C0130C7E9318>I<600000F80000FC00007F00003F80000FE00007F00001FC0000FE0000 +3F80001FC00007E00007E0001FC0003F8000FE0001FC0007F0000FE0003F80007F0000FC +0000F8000060000013187E9918>I<0FF0003FFC007FFF00700F00F00380F00380600780 +000F00003E00007C0001F00001E00003C00003C00003C00003C00003C000038000000000 +00000000000000000000000003800007C00007C00007C000038000111C7D9B18>I<0070 +0000F80000F80000D80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E +000707000707000707000707000707000FFF800FFF800FFF800E03801C01C01C01C01C01 +C07F07F0FF07F87F07F0151C7F9B18>65 D<7FFC00FFFF007FFF801C03C01C01C01C00E0 +1C00E01C00E01C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E01C00F0 +1C00701C00701C00701C00701C00F01C00E01C03E07FFFC0FFFF807FFE00141C7F9B18> +I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E000 +00E00000E00000E00000E00000E00000E000007000007000E07000E03800E03C00E01E01 +C00F07C007FF8003FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C +03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C +00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B +18>III<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E0 +0000E00000E00000E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C038 +03C01C07C01F0FC00FFFC003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C0 +1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C0 +1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0 +151C7F9B18>I<7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C0 +0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 +0001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>I<7F07F0FF87F87F07F01C +03C01C07801C07001C0E001C1E001C3C001C38001C70001CF0001DF0001DF0001FB8001F +B8001F1C001E1C001C0E001C0E001C07001C07001C03801C03801C01C07F03F0FF87F87F +03F0151C7F9B18>75 DII<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C0 +1CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C0 +1C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FFE003FFF +807FFFC07803C07001C0F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000 +E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07C07C07FFF +C03FFF800FFE00131C7E9B18>II<0FFE00 +3FFF807FFFC07803C07001C0F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0 +E000E0E000E0E000E0E000E0E000E0E000E0E000E0E070E0E070E0F079E07039C0783FC0 +7FFFC03FFF800FFE00000F000007800007800003C00001C00001C013227E9B18>I<7FF8 +00FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF +001FFE001FFE001C0F001C07001C03801C03801C03801C03801C03801C039C1C039C1C03 +9C7F01F8FF81F87F00F0161C7F9B18>I<03F1C01FFFC03FFFC07C0FC07003C0E001C0E0 +01C0E001C0E000007000007800003F00001FF00007FE0000FF00000F800003C00001C000 +00E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I< +7FFFF8FFFFF8FFFFF8E07038E07038E07038E07038007000007000007000007000007000 +007000007000007000007000007000007000007000007000007000007000007000007000 +00700007FF0007FF0007FF00151C7F9B18>IIII<7F0FE07F9FE07F0FE00E07000F0700070E00078E00039C0003DC0001F80001F8 +0000F80000F00000700000F00000F80001FC0001DC00039E00038E00070F000707000E07 +800E03801E03C07F07F0FF07F87F07F0151C7F9B18>II<3FFFE07FFFE07FFFE07001C07003C0700780700700000F00001E00001C00 +003C0000780000700000F00001E00001C00003C0000780000700000F00001E00E01C00E0 +3C00E07800E07000E0FFFFE0FFFFE0FFFFE0131C7E9B18>II<600000F0 +0000F00000F800007800007C00003C00003C00003E00001E00001F00000F00000F00000F +800007800007C00003C00003C00003E00001E00001F00000F00000F80000780000780000 +7C00003C00003E00001E00001E00001F00000F00000F8000078000078000030011247D9F +18>II<018007C01FF07EFCF83EE00E0F067C9B18>I<061E3E387070E0E0 +E0F8FC7C7C38070E789E18>96 D<0FF0001FFC003FFE003C0F0018070000038000038000 +FF8007FF801FFF807F0380780380E00380E00380E00380F00780780F803FFFF81FFDF807 +F0F815147E9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E00 +0EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E0038 +0F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF +803E0780380300700000700000E00000E00000E00000E00000E00000E000007000007001 +C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80003F80001F8000038000 +038000038000038000038003E3800FFB801FFF803C1F80380F80700780700380E00380E0 +0380E00380E00380E00380E00380700780700780380F803C1F801FFFF00FFBF803E3F015 +1C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380E001C0E001C0FFFFC0 +FFFFC0FFFFC0E000007000007001C03801C03E07C01FFF8007FF0001F80012147D9318> +I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFFC0FFFFC0FFFFC001C0 +0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 +0001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFFF81E1E301C0E0038 +07003807003807003807003807001C0E001E1E001FFC001FF80039E0003800001C00001F +FE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01FFFC00F +FF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E0000 +0E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E0 +0E00E00E00E00E00E00E00E00E00E07FC7FCFFE7FE7FC7FC171C809B18>I<038007C007 +C007C0038000000000000000007FC0FFC07FC001C001C001C001C001C001C001C001C001 +C001C001C001C001C001C0FFFFFFFFFFFF101D7C9C18>I<0038007C007C007C00380000 +0000000000000FFC0FFC0FFC001C001C001C001C001C001C001C001C001C001C001C001C +001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE03F800E277E9C18> +I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3FF00E3FF00E3FF00E07 +800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03 +800E03C07FC7F8FFC7F87FC7F8151C7F9B18>III<7E3E +00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00 +E00E00E00E00E00E00E00E00E07FC7FCFFE7FE7FC7FC1714809318>I<01F0000FFE001F +FF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C078 +03C03C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E0 +0F80E00F00700E00700E00380E00380E00380E00380E00380E00380F00700F00700F80E0 +0FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00000E00000E00007FC000 +FFE0007FC000151E809318>I<01F38007FB801FFF803E1F80380F80700780700780E003 +80E00380E00380E00380E00380E00380700780700780380F803C1F801FFF800FFB8003E3 +80000380000380000380000380000380000380000380001FF0003FF8001FF0151E7E9318 +>II<07F700 +3FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC0003FE00001F00600780 +E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<0180000380000380 +000380000380007FFFC0FFFFC0FFFFC00380000380000380000380000380000380000380 +000380000380000380400380E00380E00380E001C1C001FFC000FF80003E0013197F9818 +>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E +00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0 +FF8FF87F8FF01C01C00E03800E03800E0380070700070700070700078F00038E00038E00 +038E0001DC0001DC0001DC0000F80000F80000700015147F9318>II<7F8FF07F9FF07F8FF00F070007 +8E00039E0001DC0001F80000F80000700000F00000F80001DC00039E00038E000707000E +07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E0380 +070380070700070700038700038700038E0001CE0001CE0001CC0000CC0000DC00007800 +00780000780000700000700000700000F00000E00079E0007BC0007F80003F00001E0000 +151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F00001E00003C0000F8 +0001F00003C0000780000F00701E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318 +>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0600424769F18>124 D<060C1F1E3FBEFBF8F1F060C00F067C9B18>126 +D E /Fx 3 108 df<007F004003FFE0C00780F0C00E0019C01C0007C0380003C0780001 C0700001C0F00000C0F00000C0F00000C0F0000040F8000040F80000407C0000007E0000 007F8000003FF000001FFF80000FFFF00007FFFC0001FFFE00003FFF000003FF8000003F C000000FE0000003E0000003F0000001F0800001F0800000F0800000F0800000F0C00000 @@ -1361,7 +1552,7 @@ F0C00000E0E00000E0E00001E0F00001C0F8000380E6000700C3E01E00C0FFF800801FE0 000F0030000F0040000F0080000F0100000F0300000F0780000F0BC0000F13E0000F21E0 000F40F0000F8078000F0078000F003C000F001E000F001E000F000F000F0007800F0007 C00F0003C00F0001E00F0003F0FFF007FEFFF007FE1F1F7D9E26>107 -D E /Fw 45 122 df<0001FF0000001FFFC000007F81E00000FC01E00001F807F00003F8 +D E /Fy 46 122 df<0001FF0000001FFFC000007F81E00000FC01E00001F807F00003F8 07F00007F007F00007F007F00007F007F00007F007F00007F001C00007F000000007F000 000007F000000007F03FF800FFFFFFF800FFFFFFF800FFFFFFF80007F003F80007F003F8 0007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F800 @@ -1399,235 +1590,250 @@ FE0000FFFF0001FC078003F00FC007C01FC00F801FC01F801FC01F001FC03F000F803F00 00007E0000007E0000007E000000FE020000FE1FF000FE3FFC00FE603E00FE801F00FF80 1F80FF000FC0FF000FC0FE000FE0FE000FE0FE000FE0FE000FE07E000FE07E000FE07E00 0FE07E000FE03E000FE03F000FC01F000FC01F001F800F801F0007E07E0003FFFC0001FF -F800003FC0001B277DA622>I<00000780000000000780000000000FC0000000000FC000 -0000000FC0000000001FE0000000001FE0000000003FF0000000003FF0000000003FF000 -00000077F80000000077F800000000F7FC00000000E3FC00000000E3FC00000001C1FE00 -000001C1FE00000003C1FF0000000380FF0000000380FF00000007007F80000007007F80 -00000F007FC000000E003FC000000E003FC000001C001FE000001C001FE000003FFFFFF0 -00003FFFFFF000003FFFFFF00000700007F80000700007F80000F00007FC0000E00003FC -0001E00003FE0001C00001FE0001C00001FE0003C00001FF00FFFE003FFFFCFFFE003FFF -FCFFFE003FFFFC2E297EA833>65 DI<00007FE0030007FFFC07001FFFFF0F007FF00F9F00FF0001FF -01FC0000FF03F800007F07F000003F0FE000001F1FC000001F1FC000000F3F8000000F3F -800000077F800000077F800000077F00000000FF00000000FF00000000FF00000000FF00 -000000FF00000000FF00000000FF00000000FF00000000FF000000007F000000007F8000 -00007F800000073F800000073F800000071FC00000071FC000000E0FE000000E07F00000 -1C03F800003C01FC00007800FF0001F0007FF007C0001FFFFF800007FFFE0000007FF000 -28297CA831>I69 D<00007FE003000007FFFC0700001FFFFF0F00007FF00F9F0000FF0001FF0001FC -0000FF0003F800007F0007F000003F000FE000001F001FC000001F001FC000000F003F80 -00000F003F80000007007F80000007007F80000007007F0000000000FF0000000000FF00 -00000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00 -00000000FF0000FFFFF87F0000FFFFF87F8000FFFFF87F800000FF003F800000FF003F80 -0000FF001FC00000FF001FC00000FF000FE00000FF0007F00000FF0003F80000FF0001FC -0000FF0000FF0001FF00007FF007FF00001FFFFF9F000007FFFE0F0000007FF003002D29 -7CA835>71 DI<007F800001FFF00007FFF8000FC0FC001F803E003F001F +007E001F807E001F807E000F80FE000FC0FE000FC0FE000FC0FE000FE0FE000FE0FE000F +E0FE000FE0FE000FE07E001FE07E001FE03F003FE01F002FE00F80CFE007FF8FE001FF0F +E000080FE000000FC000000FC000000FC000001F803E001F807F001F807F003F007F003E +007F007E007E00FC003E03F8001FFFE0000FFF800001FE00001B277DA622>57 +D<00000780000000000780000000000FC0000000000FC0000000000FC0000000001FE000 +0000001FE0000000003FF0000000003FF0000000003FF00000000077F80000000077F800 +000000F7FC00000000E3FC00000000E3FC00000001C1FE00000001C1FE00000003C1FF00 +00000380FF0000000380FF00000007007F80000007007F8000000F007FC000000E003FC0 +00000E003FC000001C001FE000001C001FE000003FFFFFF000003FFFFFF000003FFFFFF0 +0000700007F80000700007F80000F00007FC0000E00003FC0001E00003FE0001C00001FE +0001C00001FE0003C00001FF00FFFE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833 +>65 DI<00 +007FE0030007FFFC07001FFFFF0F007FF00F9F00FF0001FF01FC0000FF03F800007F07F0 +00003F0FE000001F1FC000001F1FC000000F3F8000000F3F800000077F800000077F8000 +00077F00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000 +00FF00000000FF00000000FF000000007F000000007F800000007F800000073F80000007 +3F800000071FC00000071FC000000E0FE000000E07F000001C03F800003C01FC00007800 +FF0001F0007FF007C0001FFFFF800007FFFE0000007FF00028297CA831>I69 +D<00007FE003000007FFFC0700001FFFFF0F00007FF00F9F0000FF0001FF0001FC0000FF +0003F800007F0007F000003F000FE000001F001FC000001F001FC000000F003F8000000F +003F80000007007F80000007007F80000007007F0000000000FF0000000000FF00000000 +00FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000000 +00FF0000FFFFF87F0000FFFFF87F8000FFFFF87F800000FF003F800000FF003F800000FF +001FC00000FF001FC00000FF000FE00000FF0007F00000FF0003F80000FF0001FC0000FF +0000FF0001FF00007FF007FF00001FFFFF9F000007FFFE0F0000007FF003002D297CA835 +>71 D73 -D73 D76 -D<0000FFC00000000FFFFC0000003F807F000000FE001FC00001F80007E00003F00003F0 -0007E00001F8000FE00001FC001FC00000FE001FC00000FE003F8000007F003F8000007F -007F8000007F807F0000003F807F0000003F807F0000003F80FF0000003FC0FF0000003F -C0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003F -C0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000007F803F8000007F -003F8000007F001FC00000FE001FC00000FE000FE00001FC0007F00003F80003F80007F0 -0001FC000FE00000FE001FC000003FC0FF0000000FFFFC00000000FFC000002A297CA833 ->79 DI82 -D<00FF806003FFF0E00FFFF8E01F80FDE03F001FE03E0007E07C0003E07C0003E0FC0001 -E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFC00007FFFE0003FFFF8 -001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE000001FF000000F -F0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003E0F80007E0FC0007 -C0FF000F80FFE03F80E3FFFE00E1FFFC00C01FF0001C297CA825>I<7FFFFFFFFF807FFF -FFFFFF807FFFFFFFFF807F807F807F807C007F800F8078007F80078078007F8007807000 -7F800380F0007F8003C0F0007F8003C0E0007F8001C0E0007F8001C0E0007F8001C0E000 -7F8001C0E0007F8001C000007F80000000007F80000000007F80000000007F8000000000 -7F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000 -7F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000 -7F80000000007F80000000007F80000000007F80000000007F80000000007F80000000FF -FFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>I<03FF80000FFFF0001F01FC003F -80FE003F807F003F803F003F803F801F003F8000003F8000003F8000003F8000003F8000 -3FFF8001FC3F800FE03F801F803F803F003F807E003F80FC003F80FC003F80FC003F80FC -003F80FC005F807E00DF803F839FFC1FFE0FFC03FC03FC1E1B7E9A21>97 -DI<003FF000 -01FFFC0003F03E000FC07F001F807F003F007F003F007F007F003E007E0000007E000000 -FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000007E000000 -7F0000003F0003803F8003801F8007000FE00E0003F83C0001FFF800003FC000191B7E9A -1E>I<00007FF000007FF000007FF0000007F0000007F0000007F0000007F0000007F000 -0007F0000007F0000007F0000007F0000007F0000007F0000007F0003F87F001FFF7F007 -F03FF00FC00FF01F8007F03F0007F03F0007F07E0007F07E0007F07E0007F0FE0007F0FE -0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F07E0007F07E0007F03F -0007F03F0007F01F800FF00FC01FF007E07FFF01FFE7FF007F87FF202A7EA925>I<003F -C00001FFF00003E07C000F803E001F801F001F001F003F000F807E000F807E000FC07E00 -0FC0FE0007C0FE0007C0FFFFFFC0FFFFFFC0FE000000FE000000FE0000007E0000007E00 -00007F0000003F0001C01F0001C00F80038007C0070003F01E0000FFFC00003FE0001A1B -7E9A1F>I<0007F8003FFC007E3E01FC7F03F87F03F07F07F07F07F03E07F00007F00007 -F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007 -F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007 -F00007F00007F00007F00007F0007FFF807FFF807FFF80182A7EA915>I<00FF80F003FF -E3F80FC1FE1C1F007C7C3F007E7C3E003E107E003F007E003F007E003F007E003F007E00 -3F007E003F003E003E003F007E001F007C000FC1F8000BFFE00018FF8000180000003800 -0000380000003C0000003FFFF8003FFFFF001FFFFFC00FFFFFE007FFFFF01FFFFFF03C00 -07F07C0001F8F80000F8F80000F8F80000F8F80000F87C0001F07C0001F03F0007E00FC0 -1F8007FFFF00007FF0001E287E9A22>I76 D<0000FFC00000000FFFFC000000 +3F807F000000FE001FC00001F80007E00003F00003F00007E00001F8000FE00001FC001F +C00000FE001FC00000FE003F8000007F003F8000007F007F8000007F807F0000003F807F +0000003F807F0000003F80FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF +0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC07F +0000003F807F8000007F807F8000007F803F8000007F003F8000007F001FC00000FE001F +C00000FE000FE00001FC0007F00003F80003F80007F00001FC000FE00000FE001FC00000 +3FC0FF0000000FFFFC00000000FFC000002A297CA833>79 DI82 D<00FF806003FFF0E00FFFF8E01F +80FDE03F001FE03E0007E07C0003E07C0003E0FC0001E0FC0001E0FC0000E0FE0000E0FE +0000E0FF000000FFC000007FFC00007FFFE0003FFFF8001FFFFE001FFFFF0007FFFF8003 +FFFFC000FFFFC0000FFFE000007FE000001FF000000FF0000007F0E00003F0E00003F0E0 +0003F0E00003F0F00003E0F00003E0F80007E0FC0007C0FF000F80FFE03F80E3FFFE00E1 +FFFC00C01FF0001C297CA825>I<7FFFFFFFFF807FFFFFFFFF807FFFFFFFFF807F807F80 +7F807C007F800F8078007F80078078007F80078070007F800380F0007F8003C0F0007F80 +03C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C000007F80 +000000007F80000000007F80000000007F80000000007F80000000007F80000000007F80 +000000007F80000000007F80000000007F80000000007F80000000007F80000000007F80 +000000007F80000000007F80000000007F80000000007F80000000007F80000000007F80 +000000007F80000000007F80000000007F80000000FFFFFFC00000FFFFFFC00000FFFFFF +C0002A287EA72F>I<03FF80000FFFF0001F01FC003F80FE003F807F003F803F003F803F +801F003F8000003F8000003F8000003F8000003F80003FFF8001FC3F800FE03F801F803F +803F003F807E003F80FC003F80FC003F80FC003F80FC003F80FC005F807E00DF803F839F +FC1FFE0FFC03FC03FC1E1B7E9A21>97 DI<07000F801FC03FE03FE03FE01FC00F800700000000000000 -0000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 -0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7EAA12>II<003FF00001FFFC0003F03E000FC07F001F807F003F007F00 +3F007F007F003E007E0000007E000000FE000000FE000000FE000000FE000000FE000000 +FE000000FE0000007E0000007E0000007F0000003F0003803F8003801F8007000FE00E00 +03F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF0000007F000 +0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 +0007F0000007F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F03F0007F07E +0007F07E0007F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE +0007F0FE0007F07E0007F07E0007F03F0007F03F0007F01F800FF00FC01FF007E07FFF01 +FFE7FF007F87FF202A7EA925>I<003FC00001FFF00003E07C000F803E001F801F001F00 +1F003F000F807E000F807E000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FFFFFFC0FE00 +0000FE000000FE0000007E0000007E0000007F0000003F0001C01F0001C00F80038007C0 +070003F01E0000FFFC00003FE0001A1B7E9A1F>I<0007F8003FFC007E3E01FC7F03F87F +03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0 +FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 +07F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807FFF80 +7FFF80182A7EA915>I<00FF80F003FFE3F80FC1FE1C1F007C7C3F007E7C3E003E107E00 +3F007E003F007E003F007E003F007E003F007E003F003E003E003F007E001F007C000FC1 +F8000BFFE00018FF80001800000038000000380000003C0000003FFFF8003FFFFF001FFF +FFC00FFFFFE007FFFFF01FFFFFF03C0007F07C0001F8F80000F8F80000F8F80000F8F800 +00F87C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22>I107 -DII< -FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00FD807F00FD007F00FD007F00FE007F0 -0FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0 -0FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF -201B7D9A25>I<003FE00001FFFC0003F07E000FC01F801F800FC03F0007E03F0007E07E -0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE -0003F8FE0003F87E0003F07E0003F03F0007E03F0007E01F800FC00FC01F8007F07F0001 -FFFC00003FE0001D1B7E9A22>II114 D<03FE300FFFF03E03F07800F07000F0F00070F00070 -F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF80007FC0000FCE0007C -E0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1FF00161B7E9A1B>I<00E00000E0 -0000E00000E00001E00001E00001E00003E00003E00007E0000FE0001FFFE0FFFFE0FFFF -E00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0 -000FE0000FE0700FE0700FE0700FE0700FE0700FE0700FE07007F0E003F0C001FF80007F -0014267FA51A>IIIII -I E /Fx 22 123 df<60F0F06004047C830C>58 D<000001800000078000001E00000078 -000001E00000078000000E00000038000000F0000003C000000F0000003C000000F00000 -00F00000003C0000000F00000003C0000000F0000000380000000E0000000780000001E0 -000000780000001E000000078000000180191A7D9620>60 D62 -D<01FFFE00003C03C0003800E0003800F00038007000380070007000F0007000F0007000 -F0007001E000E001C000E0078000E01E0000FFF00001C0380001C00C0001C00E0001C00E -0003800E0003800E0003800E0003800E0007001E0007001E0807001E0807001E100F000F -10FFE00F20000003C01D1D7E9B20>82 D<000FC100303300400F00800601800603000603 -000606000406000407000007000007800003F00001FF0000FFC0003FE00003E00000F000 -00700000300000302000302000306000606000606000C0600080F00300CC060083F80018 -1E7E9C19>I<01E3000717000C0F00180F00380E00300E00700E00700E00E01C00E01C00 -E01C00E01C00E03880E03880E038806078803199001E0E0011127E9116>97 -D<3F00070007000E000E000E000E001C001C001C001C0039E03A303C1838187018701C70 -1C701CE038E038E038E030E070E060E0C061C023001E000E1D7E9C12>I<01F007080C08 -18043808300870307FC0E000E000E000E000E000E0046008601030600F800E127E9113> -101 D<0038C000C5C00183C00303C00703800603800E03800E03801C07001C07001C0700 -1C07001C0E001C0E001C0E000C1E00047C00039C00001C00001C00003800603800F03000 -F07000E0C0007F0000121A809114>103 D<01C003C003C0018000000000000000000000 -00001C00270047004700870087000E000E001C001C001C00380038803880708071003200 -1C000A1C7E9B0E>105 D<0007000F000F00060000000000000000000000000078009C01 -0C020C021C041C001C001C0038003800380038007000700070007000E000E000E000E001 -C061C0F180F300E6007C001024809B11>I<0FC00001C00001C000038000038000038000 -0380000700000700000700000700000E07000E08800E11C00E23C01C47801C83001D0000 -1E00003FC00038E000387000387000707100707100707100707200E03200601C00121D7E -9C16>I<3C1F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03 -801C0700380710380710380E10380E2070064030038014127E9119>110 -D<00F800030C000E06001C0300180300300300700380700380E00700E00700E00700E00E -00E00E00E01C0060180060300030E0000F800011127E9114>I<07878009C86008D03008 -E03011C03011C03801C03801C0380380700380700380700380600700E00700C007018007 -83000E86000E78000E00000E00001C00001C00001C00001C00003C0000FF0000151A8191 -15>I<01C206260C1E181E381C301C701C701CE038E038E038E038E070E070E07060F023 -E01CE000E000E001C001C001C001C003801FF00F1A7E9113>I<3C3C4E424687470F8E1E -8E0C0E000E001C001C001C001C0038003800380038007000300010127E9113>I<01F006 -0C0C040C0E180C1C001F000FE00FF003F80038201C7018F018F010803060601F800F127E -9113>I<00C001C001C001C00380038003800380FFF00700070007000E000E000E000E00 -1C001C001C001C00382038203840384018800F000C1A80990F>I<07878008C84010F0C0 -20F1E020E3C040E18000E00000E00001C00001C00001C00001C000638080F38080F38100 -E5810084C60078780013127E9118>120 D<1C00C02701C04701C04701C0870380870380 -0E03800E03801C07001C07001C07001C0700180E00180E00180E001C1E000C3C0007DC00 -001C00001800603800F03000F06000E0C0004180003E0000121A7E9114>I<038107C10F -F6081C10080010002000400080010002000400080410043C1867F843F081E010127E9113 ->I E /Fy 8 58 df<0F0030C0606060604020C030C030C030C030C030C030C030C030C0 -3040206060606030C00F000C137E9211>48 D<0C001C00EC000C000C000C000C000C000C -000C000C000C000C000C000C000C000C000C00FFC00A137D9211>I<1F0060C06060F070 -F030603000700070006000C001C00180020004000810101020207FE0FFE00C137E9211> -I<0FC030707038703870380038003000E00FC0007000380018001C601CF01CF018E03860 -701FC00E137F9211>I<006000E000E00160026006600C600860106020606060C060FFFC -0060006000600060006003FC0E137F9211>I<60607FC07F8044004000400040004F0070 -C040E0006000700070E070E070E06040E021C01F000C137E9211>I<0FC0107020186018 -601870183C303F600F800FE031F06078C01CC00CC00CC00C601830300FC00E137F9211> -56 D<0F00308060404060C020C030C030C0304030607030B00F30003000200060E040E0 -8041003E000C137E9211>I E /Fz 6 116 df<03F0400C0CC01002C03001C06000C0E000 -C0E00040E00040E00040F00000F800007E00007FE0003FFC001FFF0007FF80007F800007 -C00003E00001E00000E08000E08000E08000E0C000C0C000C0E00180D00300CE060081F8 -00131E7D9C19>83 D<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F00 -20800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F00 -00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 -00000F0000001F800003FFFC001B1C7D9B21>I107 DI<01F800070E000C03001C03803801C07801E0 -7000E0F000F0F000F0F000F0F000F0F000F0F000F0F000F07000E07801E03801C01C0380 -1E0780070E0001F80014157E941A>111 D<1F1030F06030C030C010C010E000E0007E00 -3FC01FE003F0007800380018801880188010C030F0608F800D157E9413>115 -D E /FA 36 122 df<0000001FFF8000FFC000000003FFFFF01FFFF00000001FFFFFF87F +000FE000000FE000000FE000000FE000000FE000000FE07E000FE1FF800FE30FC00FE40F +E00FE807E00FF807F00FF007F00FF007F00FE007F00FE007F00FE007F00FE007F00FE007 +F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007 +F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF202A7DA925>I<07000F801FC03FE0 +3FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00FE00FE00FE0 +0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 +FFFEFFFEFFFE0F2B7EAA12>I107 DIII<003FE00001FFFC0003F07E000FC01F801F800FC0 +3F0007E03F0007E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8 +FE0003F8FE0003F8FE0003F8FE0003F87E0003F07E0003F03F0007E03F0007E01F800FC0 +0FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>II114 D<03FE300FFFF03E03F07800F0 +7000F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF8 +0007FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1FF00161B7E +9A1B>I<00E00000E00000E00000E00001E00001E00001E00003E00003E00007E0000FE0 +001FFFE0FFFFE0FFFFE00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0 +000FE0000FE0000FE0000FE0000FE0700FE0700FE0700FE0700FE0700FE0700FE07007F0 +E003F0C001FF80007F0014267FA51A>IIIIII E /Fz 22 123 df<70F8F8F87005057C840D>58 +D<000000C0000003C000000F0000001C00000070000001E00000078000001E0000007800 +0001E00000038000000E0000003C000000F0000000F00000003C0000000E000000038000 +0001E0000000780000001E0000000780000001E0000000700000001C0000000F00000003 +C0000000C01A1C7C9823>60 D62 D<01FFFF80001E00F0001E00 +38001E001C001E001C003C001E003C001E003C001E003C001E0078003C0078003C007800 +78007800F000F001C000F0070000FFF80000F00E0001E0070001E0078001E0038001E003 +C003C0078003C0078003C0078003C0078007800F0007800F0207800F0207800F040F8007 +04FFF80308000001F01F207E9E23>82 D<0003F040000C08C0003005800060038000C003 +8001C00180018001000380010003800100038001000380000003C0000003E0000003FC00 +0001FFC00000FFF000007FF800001FF8000001FC0000007C0000003C0000001C0000001C +0020001C0020001C00200018006000380060003000600070007000E000E8018000C60300 +0081FC00001A217E9F1C>I<00F1800389C00707800E03801C03803C0380380700780700 +780700780700F00E00F00E00F00E00F00E10F01C20F01C20703C20705C40308C400F0780 +14147E9318>97 D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C +3A0E3C0E380F380F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F00 +10207E9F14>I<007C018207010E011C013C013802780C7BF07C00F000F000F000F00070 +0070017002300418380FC010147E9315>101 D<001E3000713800E0F001C07003807007 +80700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01C01E03801E03800E07800E +0B8006170001E700000700000700000E00000E00300E00781C00F038006070003FC00015 +1D809316>103 D<00E001E001E000C000000000000000000000000000000E0013002380 +4380438043808700070007000E000E001C001C001C20384038403840388019000E000B1F +7E9E10>105 D<0000C00001E00001E00001C00000000000000000000000000000000000 +00000000001E00002300004380008380010380010380020700000700000700000700000E +00000E00000E00000E00001C00001C00001C00001C000038000038000038000038000070 +0000700030700078E000F1C0006380003E00001328819E13>I<01E0000FE00001C00001 +C00001C00001C0000380000380000380000380000700000700000701E00706100E08700E +10F00E20F00E20601C40001D80001E00001FC000387000383800383800381C2070384070 +3840703840701880E01880600F0014207E9F18>I<1E07802318C023A06043C070438070 +4380708700E00700E00700E00700E00E01C00E01C00E01C00E03821C03841C07041C0708 +1C03083803101801E017147E931B>110 D<007C0001C3000301800E01C01E01C01C01E0 +3C01E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00700E00301800 +18700007C00013147E9316>I<03C1E004621804741C08781C08701E08701E10E01E00E0 +1E00E01E00E01E01C03C01C03C01C03C01C0380380780380700380E003C1C0072380071E +000700000700000E00000E00000E00000E00001C00001C0000FFC000171D819317>I<00 +F0400388C00705800E03801C03803C0380380700780700780700780700F00E00F00E00F0 +0E00F00E00F01C00F01C00703C00705C0030B8000F380000380000380000700000700000 +700000700000E00000E0000FFC00121D7E9314>I<1C1E00262100474380478780470780 +4703008E00000E00000E00000E00001C00001C00001C00001C0000380000380000380000 +38000070000030000011147E9315>I<00FC000303000600800C01800C03800C03000E00 +000F80000FF80007FC0001FE00001F00000700700700F00600F00600E004004008002030 +001FC00011147E9315>I<018001C0038003800380038007000700FFF807000E000E000E +000E001C001C001C001C003800380038003810702070207040708031001E000D1C7F9B10 +>I<03C1C00C62201034701038F02038F020386040700000700000700000700000E00000 +E00000E00000E02061C040F1C040F1C080E2C080446300383C0014147E931A>120 +D<1E00602300702300E04380E04300E04700E08701C00E01C00E01C00E01C01C03801C03 +801C03801C03801C07001807001C07001C0F000C3E0003CE00000E00000E00001C00F018 +00F03800E07000C0600041C0003F0000141D7E9316>I<01C02003F04007F8C00C1F8008 +010000020000040000080000100000600000C0000100000200000400800801001003003F +060063FE0040FC0080700013147E9315>I E /FA 8 56 df<07C018303018701C600C60 +0CE00EE00EE00EE00EE00EE00EE00EE00EE00E600C600C701C30181C7007C00F157F9412 +>48 D<06000E00FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E +000E000E000E00FFE00B157D9412>I<0F8030E040708030C038E0384038003800700070 +006000C00180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE03030601870 +1C701C001C00180038006007E000300018000C000E000EE00EE00EC00C401830300FE00F +157F9412>I<00300030007000F001F001700270047008701870107020704070C070FFFE +0070007000700070007003FE0F157F9412>I<60307FE07FC0440040004000400040004F +8070E040700030003800384038E038E0388030406020C01F000D157E9412>I<01F00608 +080C181C301C70006000E000E3E0EC30F018F00CE00EE00EE00E600E600E300C30181830 +07C00F157F9412>I<40007FFE7FFC7FF8C0088010802000400080008001000300030002 +00060006000E000E000E000E000E0004000F167E9512>I E /FB +6 116 df<03F0200C0C601803E03000E06000E0600060E00060E00020E00020E00020F0 +0000F800007C00007F80003FFC001FFF0007FF8001FFC0000FE00003E00001E00000F000 +0070800070800070800070800070C00060C000E0E000C0F80180C6030081FC0014217C9F +1C>83 D<7FFFFFF878078078600780184007800840078008C007800C8007800480078004 +800780048007800400078000000780000007800000078000000780000007800000078000 +000780000007800000078000000780000007800000078000000780000007800000078000 +000780000007800000078000000FC00003FFFF001E1F7D9E24>I107 +DI<00FE000383800E00E01C00703C007838003878003C70001CF0001EF0001EF0 +001EF0001EF0001EF0001EF0001E70001C78003C3800383C00781C00700E00E003838000 +FE0017177E961D>111 D<0FC4302C601C400CC004C004C004E00070007F003FE00FF801 +FC001C000E0006800680068006C004E008D81087E00F177E9615>115 +D E /FC 36 122 df<0000001FFF8000FFC000000003FFFFF01FFFF00000001FFFFFF87F FFFC0000007FF801FFFFC0FE000001FFC0003FFF01FF000007FF0000FFFC03FF00000FFC 0001FFF807FF80001FF80001FFF807FF80003FF80003FFF007FF80003FF00003FFF007FF 80007FF00003FFE007FF80007FE00003FFE003FF0000FFE00001FFE001FE0000FFE00001 @@ -2104,477 +2310,552 @@ F00000000007FFE00000000007FFE00000000007FFE00000000003FFC00000000003FFC0 000000F8000000000000F0000000000001F00000001F0001E00000003F8003E00000007F C003C0000000FFE007C0000000FFE00780000000FFE00F80000000FFE01F00000000FFE0 1E000000007FC07C000000007F80F8000000003F03F0000000001FFFE00000000007FF80 -0000000001FC000000000038427EAD3D>I E /FB 49 123 df<0000FE00000301800006 -0180000C0380001C0180001C0000001800000038000000380000003800000038000003FF -FE0000700E0000700E0000700E0000701C0000701C0000E01C0000E01C0000E0380000E0 -380000E0380001C0380001C0720001C0720001C0720001C0720003803400038018000380 -0000030000000300000007000000C6000000E6000000CC000000780000001925819C17> -12 D<183C3C3C0404080810204080060C779C0D>39 D<00030006000800180030006000 -C000C0018003000300060006000C000C001C001800180038003000300070007000600060 -0060006000E000E000E000E000E000600060006000600060002000300010000800080010 -2A7B9E11>I<001000100008000C00040006000600060006000600070007000700070007 -0006000600060006000E000E000C000C001C001800180038003000300060006000C000C0 -01800300030006000C00180010006000C000102A809E11>I -45 D<3078F06005047C830D>I<00000200000600000600000C00000C0000180000300000 -300000600000600000C00000C0000180000180000300000600000600000C00000C000018 -0000180000300000300000600000C00000C0000180000180000300000300000600000C00 -000C0000180000180000300000300000600000600000C0000080000017297F9E15>I<01 -E006180808100C100C200C400C401C8018E038E0F0C1E003C007800F001C003800308030 -8031001E000000000000000000000030007800F00060000E1E789D15>63 -D<0000180000001800000038000000380000007800000078000000B80000013800000138 -0000023C0000021C0000041C00000C1C0000081C0000101C0000101C0000201C0000201C -00007FFC0000C01C0000801C0001001C0001001E0002000E0002000E0004000E000C000E -001C001E00FF00FFC01A1D7E9C1F>65 D<0003F020001E0C60003002E000E003C001C001 -C0038001C0070000C00E0000801E0000801C0000803C0000803C00000078000000780000 -0078000000F0000000F0000000F0000000F0000000F0000400F0000400F0000400F00008 -00700008007000100038002000180040000C0180000706000001F800001B1E7A9C1E>67 -D<01FFFF00003C03C0003800E0003800E000380070003800700070007800700038007000 -380070007800E0007800E0007800E0007800E0007801C000F001C000F001C000F001C000 -E0038001E0038001C0038003C0038003800700070007000E0007001C00070038000E00E0 -00FFFF80001D1C7E9B1F>I<01FFFFF0003C00F000380030003800200038002000380020 -0070002000700020007008200070080000E0100000E0100000E0300000FFF00001C02000 -01C0200001C0200001C02000038040800380008003800080038001000700010007000300 -07000200070006000E003C00FFFFFC001C1C7E9B1C>I<01FFFFF0003C00F00038003000 -38002000380020003800200070002000700020007008200070080000E0100000E0100000 -E0300000FFF00001C0200001C0200001C0200001C0200003804000038000000380000003 -800000070000000700000007000000070000000F000000FFF000001C1C7E9B1B>I<03FF -0078007000700070007000E000E000E000E001C001C001C001C003800380038003800700 -0700070007000E000E000E000E001E00FFC0101C7D9B10>73 D<01FFC0003C0000380000 -380000380000380000700000700000700000700000E00000E00000E00000E00001C00001 -C00001C00001C00003800203800203800203800407000407000C0700180700380E00F0FF -FFF0171C7E9B1A>76 D<01FE0001FE003E0001E0002E0003C0002E0005C0002E0005C000 -2E0009C0004E000B80004E001380004E0023800047002380008700470000870047000087 -00870000870107000107010E000107020E000107040E000107040E000207081C00020388 -1C000203901C000203A01C000403A038000403C038000403C038000C038038001C030078 -00FF8307FF00271C7E9B25>I<01FC00FF80001C001C00002E001800002E001000002E00 -1000002700100000470020000043002000004380200000438020000081C040000081C040 -000081C040000080E040000100E080000100708000010070800001007080000200390000 -0200390000020039000002001D000004001E000004000E000004000E00000C000E00001C -00040000FF80040000211C7E9B1F>I<0007F000001C1C0000700E0000E0070001C00380 -03800380070003800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003C0 -780003C0F0000780F0000780F0000780F0000F00F0000F00F0000E00F0001E00F0003C00 -70003800700070007800E0003801C0001C0380000E0E000003F800001A1E7A9C20>I<01 -FFFE00003C0380003801C0003800E0003800E0003800E0007001E0007001E0007001E000 -7001C000E003C000E0038000E0070000E01C0001FFF00001C0000001C0000001C0000003 -800000038000000380000003800000070000000700000007000000070000000F000000FF -E000001B1C7E9B1C>I<01FFFE00003C0780003801C0003801E0003800E0003800E00070 -01E0007001E0007001E0007003C000E0038000E0070000E01C0000FFE00001C0300001C0 -180001C01C0001C01C0003801C0003801C0003801C0003801C0007003C0007003C200700 -3C2007003C200F003C40FFE01E8000000F001B1D7E9B1E>82 D<000F8400304C00403C00 -801801001803001803001806001006001006000007000007000003E00003FC0001FF0000 -7F800007C00001C00001C00000C00000C02000C02000C0600180600180600300600200F0 -0400CC180083E000161E7D9C17>I<1FFFFFC01C0701C0300E00C0200E0080600E008040 -0E0080401C0080801C0080801C0080001C00000038000000380000003800000038000000 -70000000700000007000000070000000E0000000E0000000E0000000E0000001C0000001 -C0000001C0000001C0000003C000007FFE00001A1C799B1E>I86 D<01E307170C0F180F380E300E700E700EE01CE01CE01CE01CE039E039E039 -6079319A1E0C10127C9115>97 D<3F00070007000E000E000E000E001C001C001C001C00 -39E03A183C0C380C700C700E700E700EE01CE01CE01CE018E038E030E06060C031801E00 -0F1D7C9C13>I<00F803040E041C0E181C300070007000E000E000E000E000E000E00460 -08601030600F800F127C9113>I<0007E00000E00000E00001C00001C00001C00001C000 -038000038000038000038001E7000717000C0F00180F00380E00300E00700E00700E00E0 -1C00E01C00E01C00E01C00E03900E03900E03900607900319A001E0C00131D7C9C15>I< -00F807040C0418023804300470087FF0E000E000E000E000E00060046008301030600F80 -0F127C9113>I<0003C0000670000C70001C60001C00001C000038000038000038000038 -0000380003FF8000700000700000700000700000700000E00000E00000E00000E00000E0 -0001C00001C00001C00001C00001C000038000038000038000030000030000070000C600 -00E60000CC00007800001425819C0D>I<0078C001C5C00303C00603C00E03800C03801C -03801C0380380700380700380700380700380E00380E00380E00181E000C7C00079C0000 -1C00001C00003800003800C03000E07000C1C0007F0000121A7E9113>I<0FC00001C000 -01C0000380000380000380000380000700000700000700000700000E3E000EC3000F0380 -0E03801E03801C03801C03801C0380380700380700380700380E00700E40700E40701C40 -701C80E00C80600700121D7E9C15>I<0180038001000000000000000000000000000000 -1C002600470047008E008E000E001C001C001C0038003800710071007100720072003C00 -091C7C9B0D>I<00030007000300000000000000000000000000000078008C010C020C02 -1C041C001C001C0038003800380038007000700070007000E000E000E000E001C001C0C1 -80E300C60078001024819B0D>I<0FC00001C00001C00003800003800003800003800007 -00000700000700000700000E07800E08800E11C00E21C01C41801C80001D00001E00003F -C00038E000387000387000707100707100707100707200E03200601C00121D7E9C13>I< -1F800380038007000700070007000E000E000E000E001C001C001C001C00380038003800 -38007000700070007000E200E200E200E40064003800091D7D9C0B>I<1C1E0780266318 -C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701C01C0701 -C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D127C9122>I< -383E004CC3004D03804E03809E03809C03801C03801C0380380700380700380700380E00 -700E40700E40701C40701C80E00C8060070012127C9117>I<00F800030C000E06001C03 -00180300300300700380700380E00700E00700E00700E00E00E00E00E01C006018006030 -0030E0000F800011127C9115>I<03878004C86004D03004E03009C03009C03801C03801 -C0380380700380700380700380600700E00700C00701800783000E86000E78000E00000E -00001C00001C00001C00001C0000380000FF0000151A809115>I<01E107130C0F180F38 -0E300E700E700EE01CE01CE01CE01CE038E038E038607831F01E700070007000E000E000 -E000E001C00FF8101A7C9113>I<1C3C2642468747078E068E000E000E001C001C001C00 -1C0038003800380038007000300010127C9112>I<01F006080C080C1C18181C001F001F -C00FF007F0007800386030E030C030806060C01F000E127D9111>I<0300070007000700 -0E000E000E000E00FFE01C001C001C0038003800380038007000700070007000E080E080 -E100E100660038000B1A7C990E>I<1C01802E03804E03804E03808E07008E07001C0700 -1C0700380E00380E00380E00380E00301C80301C80301C80383C80184D000F860011127C -9116>I<1C062E0E4E064E068E028E021C021C0238043804380438083008300830103820 -18400F800F127C9113>I<1E01832703874703874703838707018707010E07010E07011C -0E021C0E021C0E021C0E04180C04181C04181C081C1E080C263007C3C018127C911C>I< -0387800CC8400870E01070E020E0C020E00000E00000E00001C00001C00001C00001C000 -038100638100E38200C5820085840078780013127E9113>I<1C01802E03804E03804E03 -808E07008E07001C07001C0700380E00380E00380E00380E00301C00301C00301C00383C -001878000FB800003800003000007000E06000E0C0008180004300003C0000111A7C9114 ->I<01C107E10FF6081C10080010002000400080010002000400080410042C0C73F841F0 -80E010127E9111>I E /FC 54 124 df<003FE3F801F03F1C03C03E3E07C07C3E0F807C -3E0F807C1C0F807C000F807C000F807C000F807C000F807C00FFFFFFC0FFFFFFC00F807C -000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C -000F807C000F807C000F807C000F807C007FE1FF807FE1FF801F1D809C1C>11 -D<003FC00001F0300003C0380007C07C000F807C000F807C000F8038000F8000000F8000 -000F8000000F800000FFFFFC00FFFFFC000F807C000F807C000F807C000F807C000F807C -000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C -007FE1FF807FE1FF80191D809C1B>I<70F8FCFCFC7C0404080808102040060E7D850D> -44 DI<78FCFCFCFC7806067D850D>I<03F8000F1E00 -1C07003C07803803807803C07803C07803C0F803E0F803E0F803E0F803E0F803E0F803E0 -F803E0F803E0F803E0F803E0F803E0F803E07803C07803C03803803C07801C07000F1E00 -03F800131B7E9A18>48 D<00600001E0000FE000FFE000F3E00003E00003E00003E00003 -E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003 -E00003E00003E00003E00003E0007FFF807FFF80111B7D9A18>I<07F8001FFE00383F80 -780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007C0000F80001F00001E00 -00380000700000E0000180600300600600600800E01FFFC03FFFC07FFFC0FFFFC0FFFFC0 -131B7E9A18>I<07F8001FFE003C1F003C0F807C07C07E07C07C07C03807C0000F80000F -80001E00003C0003F800001E00000F800007C00007C00007E03007E07807E0FC07E0FC07 -E0FC07C0780F80781F001FFE0007F800131B7E9A18>I<000180000380000780000F8000 -1F80003F80006F8000CF80008F80018F80030F80060F800C0F80180F80300F80600F80C0 -0F80FFFFF8FFFFF8000F80000F80000F80000F80000F80000F8000FFF800FFF8151B7F9A -18>I<3801803FFF003FFE003FFC003FF8003FC00030000030000030000030000031F800 -361E00380F803007800007C00007E00007E00007E07807E0F807E0F807E0F807C0F007C0 -600F80381F001FFE0007F000131B7E9A18>I<007E0003FF000781800F03C01E07C03C07 -C07C0380780000780000F80000F8F800FB0E00FA0780FC0380FC03C0F803E0F803E0F803 -E0F803E07803E07803E07803C03C03C03C07801E0F0007FE0003F800131B7E9A18>I<60 -00007FFFE07FFFE07FFFC07FFF807FFF80E00300C00600C00C00C0180000300000300000 -600000E00000E00001E00001C00003C00003C00003C00003C00007C00007C00007C00007 -C00007C00007C000038000131C7D9B18>I<03F8000FFE001E0F803807803803C07803C0 -7C03C07E03C07F83803FC7003FFE001FFC000FFE0007FF001DFF80387FC0781FE0700FE0 -F003E0F001E0F001E0F001E07801C07803803E07801FFE0003F800131B7E9A18>I<03F8 -000FFE001E0F003C07807807807803C0F803C0F803C0F803E0F803E0F803E0F803E07807 -E03807E03C0BE00E1BE003E3E00003E00003C00003C03807C07C07807C0700780F00383C -001FF8000FE000131B7E9A18>I<78FCFCFCFC7800000000000078FCFCFCFC7806127D91 -0D>I<00038000000380000007C0000007C0000007C000000FE000000FE000001FF00000 -1BF000003BF8000031F8000031F8000060FC000060FC0000E0FE0000C07E0000C07E0001 -803F0001FFFF0003FFFF8003001F8007001FC006000FC006000FC00C0007E00C0007E0FF -803FFEFF803FFE1F1C7E9B24>65 DI<001FE02000FFF8E003F8 -0FE007C003E00F8001E01F0000E03E0000E03E0000607E0000607C000060FC000000FC00 -0000FC000000FC000000FC000000FC000000FC000000FC0000007C0000607E0000603E00 -00603E0000C01F0000C00F80018007C0030003F80E0000FFFC00001FE0001B1C7D9B22> -IIII73 D77 -DI80 D82 -D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE -003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000 -E0F001C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E0 -601F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000001F8000 -001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 -001F8000001F8000001F8000001F800007FFFE0007FFFE001C1C7E9B21>II<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C0 -3C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 -DI<03FC000E0E001C1F003C1F0078 -1F00780E00F80000F80000F80000F80000F80000F800007800007801803C01801C03000E -0E0003F80011127E9115>I<000FF0000FF00001F00001F00001F00001F00001F00001F0 -0001F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0 -F801F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<03FC -000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800007800 -007800603C00601E00C00F038001FC0013127F9116>I<007F0001E38003C7C00787C00F -87C00F83800F80000F80000F80000F80000F8000FFF800FFF8000F80000F80000F80000F -80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF0007F -F000121D809C0F>I<03F0F00E1F383C0F38380730780780780780780780780780380700 -3C0F001E1C0033F0003000003000003000003FFF003FFFC01FFFE01FFFF07801F8F00078 -F00078F000787000707800F01E03C007FF00151B7F9118>II<1E003F003F003F003F001E000000000000000000000000007F -007F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFC0FFC00A -1E7F9D0E>I107 +0000000001FC000000000038427EAD3D>I E /FD 49 123 df<00003FE00000E0100001 +8038000380780003807800070030000700000007000000070000000E0000000E0000000E +000000FFFFE0000E00E0001C01C0001C01C0001C01C0001C01C0001C0380003803800038 +0380003803800038070000380700007807000070071000700E2000700E2000700E200060 +0E2000E0064000E0038000E0000000C0000000C0000001C000003180000079800000F300 +0000620000003C0000001D29829F1A>12 D<1C3E7E7E3A020404080810204080070E769F +0E>39 D<000100020004000800100020006000C0018001800300070006000E000C001C00 +18003800380030007000700060006000E000E000C000C000C000C000C000C000C000C000 +C000C000C000C000C0004000600060002000100010000800102E79A113>I<0010000008 +000004000006000002000003000003000003000001000001800001800001800001800001 +800001800001800003800003800003800003000003000003000007000007000006000006 +00000E00000C00000C00001C0000180000380000300000700000600000E00000C0000180 +000100000300000600000C0000180000300000600000800000112E80A113>I<7FF0FFE0 +7FE00C037D8A10>45 D<70F8F8F0E005057B840E>I<00000040000000C0000001800000 +01800000030000000300000006000000060000000C000000180000001800000030000000 +3000000060000000C0000000C0000001800000018000000300000003000000060000000C +0000000C0000001800000018000000300000003000000060000000C0000000C000000180 +0000018000000300000003000000060000000C0000000C00000018000000180000003000 +00003000000060000000C0000000C0000000800000001A2D7FA117>I<00780001860006 +0300080100080180100180200180200300400300700700781E00F03C0060780000F00003 +C0000780000F00000E00000C00001840001840000880000F000000000000000000000000 +00000000001C00003E00003E00003C0000380000112178A017>63 +D<00000200000006000000060000000E0000001E0000001E0000003F0000002F0000004F +000000CF0000008F0000010F0000010F0000020F0000020F0000040F0000080F0000080F +0000100F800010078000200780003FFF8000400780008007800080078001000780010007 +800200078006000780040007801E0007C0FF807FF81D207E9F22>65 +D<0000FE0200078186001C004C0038003C0060003C00C0001C01C0001803800018070000 +180F0000181E0000101E0000103C0000003C000000780000007800000078000000780000 +00F0000000F0000000F0000000F0000000F0000080700000807000008070000100380001 +0038000200180004000C001800060020000381C00000FE00001F217A9F21>67 +D<00FFFF80001E00E0001E0070001E0038001E001C003C001C003C000E003C000E003C00 +0E0078000E0078000E0078000E0078000E00F0001E00F0001E00F0001E00F0001E01E000 +3C01E0003C01E0003C01E0007803C0007003C0007003C000E003C001C0078003C0078003 +8007800E0007801C000F007000FFFFC0001F1F7D9E22>I<01FFFFFE001E001C001E000C +001E0004001E0004003C0004003C0004003C0004003C0004007804080078040000780400 +00780C0000F0180000FFF80000F0180000F0180001E0100001E0100001E0100001E00010 +03C0002003C0002003C0004003C00040078000800780018007800100078007000F001F00 +FFFFFE001F1F7D9E1F>I<01FFFFFC001E0038001E0018001E0008001E0008003C000800 +3C0008003C0008003C00080078001000780800007808000078080000F0100000F0300000 +FFF00000F0300001E0200001E0200001E0200001E0200003C0000003C0000003C0000003 +C00000078000000780000007800000078000000F800000FFF800001E1F7D9E1E>I<01FF +F0001F00001E00001E00001E00003C00003C00003C00003C000078000078000078000078 +0000F00000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C0 +000780000780000780000780000F8000FFF000141F7D9E12>73 D<01FFF800001F000000 +1E0000001E0000001E0000003C0000003C0000003C0000003C0000007800000078000000 +7800000078000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001 +E0008003C0010003C0010003C0030003C00200078006000780060007800C0007801C000F +007800FFFFF800191F7D9E1D>76 D<01FE00007FC0001E0000FC00001E0000F800001700 +01780000170001780000270002F00000270004F00000270004F00000270008F000004700 +09E00000470011E00000470021E00000470021E00000870043C00000838043C000008380 +83C00000838083C000010381078000010382078000010382078000010384078000020384 +0F00000203880F00000203900F00000203900F00000401E01E00000401E01E00000401C0 +1E00000C01801E00001C01803E0000FF8103FFC0002A1F7D9E29>I<00FF003FE0001F00 +0F00001F0004000017800400001780040000278008000023C008000023C008000023C008 +000041E010000041E010000041F010000040F010000080F0200000807820000080782000 +008078200001003C400001003C400001003C400001001E400002001E800002001E800002 +000F800002000F800004000F0000040007000004000700000C000700001C00020000FF80 +020000231F7D9E22>I<0001FC0000070700001C01C0003000E000E0006001C000700380 +007007800038070000380E0000381E0000381C0000383C0000383C000038780000787800 +00787800007878000078F00000F0F00000F0F00000E0F00001E0F00001C0F00003C07000 +03807000070078000F0038001E0038003C001C0070000E00E0000783800001FC00001D21 +7A9F23>I<01FFFF80001E00E0001E0070001E0038001E003C003C003C003C003C003C00 +3C003C003C0078007800780078007800F0007800E000F003C000F00F0000FFFC0000F000 +0001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000078000 +000780000007800000078000000F800000FFF000001E1F7D9E1F>I<00FFFF00001E03C0 +001E00E0001E0070001E0078003C0078003C0078003C0078003C0078007800F0007800F0 +007801E0007801C000F0070000F01E0000FFF00000F01C0001E00E0001E00F0001E00700 +01E0078003C00F0003C00F0003C00F0003C00F0007801E0007801E0807801E0807801E10 +0F800E10FFF00E20000003C01D207D9E21>82 D<0007E040001C18C00030058000600380 +00C0038001C00180018001000380010003800100038001000380000003C0000003C00000 +03F8000001FF800001FFE000007FF000001FF0000001F800000078000000780000003800 +0000380020003800200038002000300060007000600060006000E0007000C000E8038000 +C606000081F800001A217D9F1A>I<0FFFFFFC1E03C0381803C0181003C0082003C00820 +078008600780084007800840078008800F0010000F0000000F0000000F0000001E000000 +1E0000001E0000001E0000003C0000003C0000003C0000003C0000007800000078000000 +7800000078000000F0000000F0000000F0000000F0000001F000007FFF80001E1F799E21 +>I86 +D<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F00E +00F00E00F00E20F01C40F01C40703C40705C40308C800F070013147C9317>97 +D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F38 +0F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207B9F15>I< +007E0001C1000300800E07801E07801C07003C0200780000780000780000F00000F00000 +F00000F00000F0000070010070020030040018380007C00011147C9315>I<0000780003 +F80000700000700000700000700000E00000E00000E00000E00001C00001C000F1C00389 +C00707800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E +20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C01C207010E011C01 +3C013802780C7BF07C00F000F000F000F0007000700170023804183807C010147C9315> +I<00007800019C00033C00033C000718000700000700000E00000E00000E00000E00000E +0000FFE0001C00001C00001C00001C000038000038000038000038000038000070000070 +0000700000700000700000E00000E00000E00000E00000E00001C00001C00001C0000180 +003180007B0000F300006600003C00001629829F0E>I<001E3000713800E0F001C07003 +80700780700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01C01E03801E03800E +07800E0B8006170001E700000700000700000E00000E00300E00781C00F038006070003F +C000151D7F9315>I<01E0000FE00001C00001C00001C00001C000038000038000038000 +038000070000070000071E000763000E81800F01C00E01C00E01C01C03801C03801C0380 +1C0380380700380700380700380E10700E20700E20701C20700C40E00C8060070014207D +9F17>I<00C001E001E001C000000000000000000000000000000E001300230043804700 +470087000E000E000E001C001C001C003840388038807080310032001C000B1F7C9E0E> +I<0001800003C00003C0000380000000000000000000000000000000000000000000003C +00004600008700008700010700010700020E00000E00000E00000E00001C00001C00001C +00001C0000380000380000380000380000700000700000700000700000E00000E00030E0 +0079C000F180006300003C00001228829E0E>I<01E0000FE00001C00001C00001C00001 +C0000380000380000380000380000700000700000703C00704200E08E00E11E00E21E00E +40C01C80001D00001E00001FC00038E00038700038700038384070708070708070708070 +3100E03100601E0013207D9F15>I<03C01FC0038003800380038007000700070007000E +000E000E000E001C001C001C001C0038003800380038007000700070007100E200E200E2 +00E200640038000A207C9F0C>I<1C0F80F0002630C318004740640C004780680E004700 +700E004700700E008E00E01C000E00E01C000E00E01C000E00E01C001C01C038001C01C0 +38001C01C038001C01C0708038038071003803807100380380E100380380620070070064 +00300300380021147C9325>I<1C0F802630C04740604780604700704700708E00E00E00 +E00E00E00E00E01C01C01C01C01C01C01C03843803883803883807083803107003303001 +C016147C931A>I<007C0001C3000301800E01C01E01C01C01E03C01E07801E07801E078 +01E0F003C0F003C0F003C0F00780F00700700F00700E0030180018700007C00013147C93 +17>I<01C1E002621804741C04781C04701E04701E08E01E00E01E00E01E00E01E01C03C +01C03C01C03C01C0380380780380700380E003C1C0072380071E000700000700000E0000 +0E00000E00000E00001C00001C0000FF8000171D809317>I<00F0400388C00705800E03 +801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E00F01C00F01C +00703C00705C0030B8000F380000380000380000700000700000700000700000E00000E0 +000FFE00121D7C9315>I<1C1E002661002783804787804707804703008E00000E00000E +00000E00001C00001C00001C00001C000038000038000038000038000070000030000011 +147C9313>I<00FC030206010C030C070C060C000F800FF007F803FC003E000E700EF00C +F00CE008401020601F8010147D9313>I<018001C0038003800380038007000700FFF007 +000E000E000E000E001C001C001C001C003800380038003820704070407080708031001E +000C1C7C9B0F>I<0E00C01300E02301C04381C04701C04701C08703800E03800E03800E +03801C07001C07001C07001C07101C0E20180E20180E201C1E400C264007C38014147C93 +18>I<0E03801307802307C04383C04701C04700C08700800E00800E00800E00801C0100 +1C01001C01001C02001C02001C04001C04001C08000E300003C00012147C9315>I<0E00 +C1C01300E3C02301C3E04381C1E04701C0E04701C060870380400E0380400E0380400E03 +80401C0700801C0700801C0700801C0701001C0701001C0601001C0F02000C0F04000E13 +080003E1F0001B147C931E>I<0383800CC4401068E01071E02071E02070C040E00000E0 +0000E00000E00001C00001C00001C00001C040638080F38080F38100E5810084C6007878 +0013147D9315>I<0E00C01300E02301C04381C04701C04701C08703800E03800E03800E +03801C07001C07001C07001C07001C0E00180E00180E001C1E000C3C0007DC00001C0000 +1C00003800F03800F07000E06000C0C0004380003E0000131D7C9316>I<01C04003E080 +07F1800C1F00080200000400000800001000002000004000008000010000020000040100 +0802001002003E0C0063FC0041F80080E00012147D9313>I E /FE +54 124 df<000FF07F00007FF9FF8000F83FC7C001E07F8FC003E07F0FC007C07F0FC007 +C03F078007C01F000007C01F000007C01F000007C01F000007C01F0000FFFFFFF800FFFF +FFF80007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F +000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F00 +0007C01F000007C01F00003FF8FFF0003FF8FFF0002220809F1F>11 +D<000FE000007FF80000F81C0001E07C0003E07C0007C07C0007C07C0007C0380007C000 +0007C0000007C0000007C1FE00FFFFFE00FFFFFE0007C03E0007C03E0007C03E0007C03E +0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E +0007C03E0007C03E0007C03E003FF9FFC03FF9FFC01A20809F1D>I<387CFEFFFF7F3B03 +0306060E0C18302008107C860F>44 DI<387CFEFEFE +7C3807077C860F>I<01FC0007FF001F07C01E03C03E03E07C01F07C01F07C01F0FC01F8 +FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8 +7C01F07C01F07C01F03E03E01E03C01F8FC007FF0001FC00151D7E9C1A>48 +D<00700000F00007F000FFF000F9F00001F00001F00001F00001F00001F00001F00001F0 +0001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0 +0001F00001F00001F0007FFFC07FFFC0121D7D9C1A>I<03FC001FFF80381FC07C07E0FE +03F0FE03F0FE03F8FE01F87C01F83801F80003F80003F00003F00007E0000FC0000F0000 +1E00003C0000700000E00001C0180380180600180C00381FFFF03FFFF07FFFF0FFFFF0FF +FFF0151D7E9C1A>I<03FC000FFF801C0FC03C07E07E03F07E03F07E03F07E07F03C07E0 +0007E0000FC0003F8003FE0003FC00000F800007C00003E00003F00003F83803F87C03F8 +FE03F8FE03F8FE03F0FC03F07807E03C0FC01FFF8003FC00151D7E9C1A>I<0001C00003 +C00007C00007C0000FC0001FC0003BC00073C00063C000C3C00183C00383C00703C00E03 +C00C03C01803C03803C07003C0E003C0FFFFFEFFFFFE0007C00007C00007C00007C00007 +C00007C000FFFE00FFFE171D7F9C1A>I<1C00E01FFFE01FFFC01FFF801FFF001FFC001F +C00018000018000018000018000019FE001FFF801E07C01803E01001F00001F00001F800 +01F87801F8FC01F8FC01F8FC01F8FC01F07803F07003E03C0FC00FFF0003FC00151D7E9C +1A>I<003F0001FFC007C0E00F81E01F03F01E03F03E03F07C03F07C01E07C0000FC1000 +FCFF00FDFFC0FD03E0FE01F0FE01F0FC01F8FC01F8FC01F8FC01F87C01F87C01F87C01F8 +3C01F03E01F01E03E00F07C007FF8001FE00151D7E9C1A>I<6000007FFFF87FFFF87FFF +F07FFFE07FFFC0E00180C00300C00300C00600000C0000180000380000300000700000F0 +0000F00001E00001E00003E00003E00003E00003E00007E00007E00007E00007E00007E0 +0003C000018000151E7D9D1A>I<01FE000FFF801E07C03801E03800F07800F07800F07C +00F07F00F07FC1E03FE3C01FFF800FFE0007FF8007FFC01FFFE03C3FF0780FF07803F8F0 +01F8F000F8F00078F00078F000707800707C00E03E03C00FFF8003FC00151D7E9C1A>I< +01FC000FFF001F07803E03C07C03E07C01E0FC01F0FC01F0FC01F0FC01F8FC01F8FC01F8 +FC01F87C03F87C03F83E05F81FFDF807F9F80041F80001F03C01F07E01F07E03E07E03E0 +7E03C03C0780381F001FFC0007F000151D7E9C1A>I<387CFEFEFE7C3800000000000038 +7CFEFEFE7C3807147C930F>I<0000E000000000E000000001F000000001F000000001F0 +00000003F800000003F800000006FC00000006FC0000000EFE0000000C7E0000000C7E00 +0000183F000000183F000000303F800000301F800000701FC00000600FC00000600FC000 +00C007E00000FFFFE00001FFFFF000018003F000038003F800030001F800030001F80006 +0000FC00060000FC000E0000FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65 +DI<0007FC02003FFF0E00FE03DE +03F000FE07E0003E0FC0001E1F80001E3F00000E3F00000E7F0000067E0000067E000006 +FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000007E000006 +7F0000063F0000063F00000C1F80000C0FC0001807E0003803F0007000FE01C0003FFF80 +0007FC001F1F7D9E26>IIII73 +D77 DI80 D82 D<03FC080FFF381E03F83800F8700078700038F00038F00018F00018F80000FC00 +007FC0007FFE003FFF801FFFC00FFFE007FFF000FFF80007F80000FC00007C00003CC000 +3CC0003CC0003CE00038E00078F80070FE01E0EFFFC081FF00161F7D9E1D>I<7FFFFFFC +7FFFFFFC7C07E07C7007E01C6007E00C6007E00CE007E00EC007E006C007E006C007E006 +C007E0060007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 +0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 +03FFFFC003FFFFC01F1E7E9D24>II<07FC00 +1FFF803F07C03F03E03F01F03F01F00C01F00001F0003FF007FDF01F81F03E01F07C01F0 +F801F0F801F0F801F0FC02F07E0CF03FF87E0FE03E17147F9319>97 +DI<01FE0007 +FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC0000FC00007C +00007E00003E00603F00C01F81C007FF0001FC0013147E9317>I<0007F80007F80000F8 +0000F80000F80000F80000F80000F80000F80000F80000F80000F801F8F807FEF81F83F8 +3E01F87E00F87C00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87C00F8 +7E00F83E01F81F07F80FFEFF03F8FF18207E9F1D>I<01FE0007FF800F83C01E01E03E00 +F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00003E00181E00 +180F807007FFE000FF8015147F9318>I<003F8000FFC003E3E007C7E00787E00F87E00F +83C00F80000F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F +80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007F +F8007FF80013207F9F10>I<03FC3C0FFFFE1E079E3C03DE7C03E07C03E07C03E07C03E0 +7C03E03C03C01E07801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC +78007C70003EF0001EF0001EF0001E78003C78003C3F01F80FFFE001FF00171E7F931A> +II<1C003E00 +7F007F007F003E001C00000000000000000000000000FF00FF001F001F001F001F001F00 +1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B217EA00E>I107 DIII<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F8 -00F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>II114 -D<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CF -C00E127E9113>I<0300030003000300070007000F000F003FFCFFFC1F001F001F001F00 -1F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>IIIIII123 -D E /FD 81 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0 -000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0 -000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0 -000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703 -C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01 -C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 -C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E -01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E -01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<003F07 -E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00E000 -000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C00 -0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E -00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D -809C23>I<0E0E1E3870E0800707779C15>19 D<60F0F0F0F0F0F0F06060606060606060 -6060606060000000000060F0F060041E7C9D0C>33 D<6060F0F0F8F86868080808080808 -101010102020404080800D0C7F9C15>I<0F0000C0188000C030600380703807006027FB -00E0100600E0100C00E0100C00E0101800E0101800E0103000E0106000602060007020C0 -0030418000188180000F0303C00006062000060C10000C1C080018180800183804003038 -04006038040060380400C0380400C03804018038040300180803001C0806000C100C0006 -20040003C01E217E9E23>37 D<60F0F8680808081010204080050C7C9C0C>39 -D<00800100020006000C000C00180018003000300030006000600060006000E000E000E0 -00E000E000E000E000E000E000E000E000E0006000600060006000300030003000180018 -000C000C000600020001000080092A7C9E10>I<8000400020003000180018000C000C00 -060006000600030003000300030003800380038003800380038003800380038003800380 -038003000300030003000600060006000C000C00180018003000200040008000092A7E9E -10>I<60F0F0701010101020204080040C7C830C>44 DI<60F0F0 -6004047C830C>I<00010003000600060006000C000C000C001800180018003000300030 -0060006000C000C000C0018001800180030003000300060006000C000C000C0018001800 -1800300030003000600060006000C000C00010297E9E15>I<03C00C301818300C300C70 -0E60066006E007E007E007E007E007E007E007E007E007E007E007E007E0076006600670 -0E300C300C18180C3007E0101D7E9B15>I<010007003F00C70007000700070007000700 -070007000700070007000700070007000700070007000700070007000700070007000700 -FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E00 -1C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I< -07E01830201C201C781E780E781E381E001C001C00180030006007C00030001C001C000E -000F000F700FF80FF80FF80FF00E401C201C183007C0101D7E9B15>I<000C00000C0000 -1C00003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C0010 -1C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C0000 -1C0001FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E02C30 -3018301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D -7E9B15>I<00F0030C04040C0E181E301E300C700070006000E3E0E430E818F00CF00EE0 -06E007E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<4000 -007FFF807FFF007FFF004002008004008004008008000010000010000020000060000040 -0000C00000C00001C0000180000180000380000380000380000380000780000780000780 -00078000078000078000030000111D7E9B15>I<03E00C301008200C2006600660067006 -70067C0C3E183FB01FE007F007F818FC307E601E600FC007C003C003C003C00360026004 -300C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E0 -07E0076007700F300F18170C2707C700060006000E300C780C78187018203010C00F8010 -1D7E9B15>I<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F0600000 -000000000000000060F0F0701010101020204080041A7C910C>I<0FE03038401CE00EF0 -0EF00EF00E000C001C0030006000C0008001800100010001000100010001000000000000 -000000000003000780078003000F1D7E9C14>63 D<000600000006000000060000000F00 -00000F0000000F000000178000001780000037C0000023C0000023C0000043E0000041E0 -000041E0000080F0000080F0000080F000010078000100780001FFF80002003C0002003C -0002003C0004001E0004001E000C001F000C000F001E001F00FF00FFF01C1D7F9C1F>65 -DI<001F808000E0618001801980070007800E0003801C000380 -1C00018038000180780000807800008070000080F0000000F0000000F0000000F0000000 -F0000000F0000000F0000000F0000000700000807800008078000080380000801C000100 -1C0001000E000200070004000180080000E03000001FC000191E7E9C1E>IIII<001F808000E0618001801980070007800E0003801C0003801C000180 -38000180780000807800008070000080F0000000F0000000F0000000F0000000F0000000 -F0000000F000FFF0F0000F80700007807800078078000780380007801C0007801C000780 -0E00078007000B800180118000E06080001F80001C1E7E9C21>III<07FF80007C0000 -3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 -3C00003C00003C00003C00003C00003C00003C00703C00F83C00F83C00F8380070780040 -700030E0000F8000111D7F9B15>IIIII<003F800000E0E0000380380007 -001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F0 -0001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C078 -0003C0380003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B -1E7E9C20>II<003F800000E0E000038038 -0007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001 -E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003 -C0780003C0380003803C0E07801C1107000E208E0007205C0003A0780000F0E020003FE0 -200000602000003060000038E000003FC000003FC000001F8000000F001B257E9C20>I< -FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E00 -0F001C000F003C000F0078000F01E0000FFF00000F01E0000F0070000F0078000F003C00 -0F003C000F003C000F003C000F003C000F003C000F003C100F003C100F001C100F001C10 -FFF00E20000003C01C1D7E9B1F>I<07E0801C1980300580300380600180E00180E00080 -E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C0 -0003C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E -9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020 -800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 -000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 -001F800003FFFC001B1C7F9B1E>IIIII91 D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>I< -FEFE06060606060606060606060606060606060606060606060606060606060606060606 -060606FEFE0729809E0C>I<1FC000307000783800781C00301C00001C00001C0001FC00 -0F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115> -97 DI<03F80C0C181E301E700C60 -00E000E000E000E000E000E00060007002300218040C1803E00F127F9112>I<001F8000 -038000038000038000038000038000038000038000038000038000038003F3800E0B8018 -0780300380700380600380E00380E00380E00380E00380E00380E0038060038070038030 -03801807800E1B8003E3F0141D7F9C17>I<07E00C301818300C700E6006E006FFFEE000 -E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E -000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E -000E000E000E000E007FE00F1D809C0D>I<00038007C4C01C78C0383880301800701C00 -701C00701C00701C003018003838001C700027C0002000002000003000003FF8001FFF00 -1FFF802003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215> -II<18003C003C0018000000000000 -000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C -001C001C001C00FF80091D7F9C0C>I<00C001E001E000C0000000000000000000000000 -000007E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 -00E000E000E000E060E0F0C0F1C061803E000B25839C0D>IIII< +FE0FE03F80FE1FF07FC01E70F9C3E01E407D01F01E807E01F01F807E01F01F007C01F01F +007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F00 +7C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D932C>II<01FF0007FFC0 +1F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007E7C007C +7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>II114 D<0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC007 +C007E007F006F81EFFFCC7F010147E9315>I<0300030003000300070007000F000F003F +00FFFCFFFC1F001F001F001F001F001F001F001F001F001F001F061F061F061F061F060F +8C07F803F00F1D7F9C14>IIIII< +FFE07F80FFE07F801F001C000F8018000F80180007C0300007C0300003E0600003E06000 +03F0E00001F0C00001F9C00000F9800000FF8000007F0000007F0000003E0000003E0000 +001C0000001C0000001800000018000078300000FC300000FC600000C0E00000E1C00000 +7F8000001E000000191D7F931C>I123 +D E /FF 82 123 df<001F83E000F06E3001C078780380F8780300F03007007000070070 +000700700007007000070070000700700007007000FFFFFF800700700007007000070070 +000700700007007000070070000700700007007000070070000700700007007000070070 +000700700007007000070070000700700007007000070070003FE3FF001D20809F1B>11 +D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700 +00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700 +E00700E00700E00700E00700E00700E00700E00700E03FC3FC1620809F19>I<003FE000 +E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007 +00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007 +00E00700E00700E00700E00700E00700E03FE7FC1620809F19>I<001F81F80000F04F04 +0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000 +070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007 +007007000700700700070070070007007007000700700700070070070007007007000700 +700700070070070007007007000700700700070070070007007007000700700700070070 +07003FE3FE3FE02320809F26>I<07070F1C383060C00808779F17>19 +D<70F8F8F8F8F8F8F8707070707070707070702020202020000000000070F8F8F8700521 +7CA00D>33 D<7038F87CFC7EFC7E743A0402040204020804080410081008201040200F0E +7F9F17>I<078000180018400018003020003000301800E00060170360006008FCC000E0 +08018000E008018000E008030000E008060000E008060000E0080C000060081800006010 +1800003010300000302060000018406000000780C0000000018078000001818400000303 +020000030301000006070100000C060100000C0E008000180E008000300E008000300E00 +8000600E008000C00E008000C00E00800180060100030007010003000301000600030200 +0C00018400040000780021257EA126>37 D<70F8FCFC74040404080810102040060E7C9F +0D>39 D<0040008001000300060004000C00180018003800300030007000600060006000 +6000E000E000E000E000E000E000E000E000E000E000E000E00060006000600060007000 +300030003800180018000C000400060003000100008000400A2E7BA112>I<8000400020 +003000180008000C00060006000700030003000380018001800180018001C001C001C001 +C001C001C001C001C001C001C001C001C001800180018001800380030003000700060006 +000C000800180030002000400080000A2E7EA112>I<01800180018001800180E187718E +399C0FF003C003C00FF0399C718EE1870180018001800180018010147DA117>I<70F0F8 +F878080808101010202040050E7C840D>44 DI<70F8F8F87005 +057C840D>I<0000400000C0000180000180000180000300000300000300000600000600 +000C00000C00000C0000180000180000180000300000300000600000600000600000C000 +00C00000C0000180000180000180000300000300000600000600000600000C00000C0000 +0C0000180000180000300000300000300000600000600000600000C00000C00000122D7E +A117>I<03F0000E1C001C0E00180600380700700380700380700380700380F003C0F003 +C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07003 +807003807003807807803807001806001C0E000E1C0003F000121F7E9D17>I<00800380 +0F80F3800380038003800380038003800380038003800380038003800380038003800380 +0380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E00 +200700400780800780F007C0F803C0F803C0F803C02007C00007C0000780000780000F00 +000E00001C0000380000700000600000C0000180000300000600400C0040180040100080 +3FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F807807807807 +80380F80000F80000F00000F00001E00001C0000700007F000003C00000E00000F000007 +800007800007C02007C0F807C0F807C0F807C0F00780400780400F00200E00183C0007F0 +00121F7E9D17>I<000600000600000E00000E00001E00002E00002E00004E00008E0000 +8E00010E00020E00020E00040E00080E00080E00100E00200E00200E00400E00C00E00FF +FFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17>I<180300 +1FFE001FFC001FF8001FE00010000010000010000010000010000010000011F000161C00 +180E001007001007800003800003800003C00003C00003C07003C0F003C0F003C0E00380 +400380400700200600100C0008380007E000121F7E9D17>I<007C000182000701000E03 +800C0780180780380300380000780000700000700000F1F000F21C00F40600F80700F803 +80F80380F003C0F003C0F003C0F003C0F003C07003C07003C07003803803803807001807 +000C0E00061C0001F000121F7E9D17>I<4000007FFFE07FFFC07FFFC040008080010080 +010080020000040000040000080000100000100000200000200000600000600000E00000 +C00001C00001C00001C00001C00003C00003C00003C00003C00003C00003C00003C00001 +8000131F7E9D17>I<03F0000C0C00100600300300200180600180600180600180700180 +7803003E03003F06001FC8000FF00003F80007FC000C7E00103F00300F806007806001C0 +C001C0C000C0C000C0C000C0C000806001802001001002000C0C0003F000121F7E9D17> +I<03F0000E18001C0C00380600380700700700700380F00380F00380F003C0F003C0F003 +C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C00003800003800003800007 +00300700780600780E00700C002018001070000FC000121F7E9D17>I<70F8F8F8700000 +000000000000000070F8F8F87005147C930D>I<70F8F8F8700000000000000000000070 +F0F8F878080808101010202040051D7C930D>I<0FE0103C601E400EE00FF00FF00F600F +001E001C00380070006000C0008000800100010001000100010001000000000000000000 +0000038007C007C007C0038010207E9F15>63 D<00010000000380000003800000038000 +0007C0000007C0000007C0000009E0000009E0000009E0000010F0000010F0000010F000 +00207800002078000020780000403C0000403C0000C03E0000801E0000801E0001FFFF00 +01000F0001000F00020007800200078002000780040003C0040003C00C0003C01E0003E0 +FF801FFE1F207F9F22>65 DI<00 +0FE01000381C3000E0027003C00170078000F00F0000701E0000701E0000303C0000303C +0000107C00001078000010F8000000F8000000F8000000F8000000F8000000F8000000F8 +000000F8000000F8000000780000007C0000103C0000103C0000101E0000201E0000200F +0000200780004003C0008000E0030000380C00000FF0001C217E9F21>IIII<000FE01000381C3000 +E0027003C00170078000F00F0000701E0000701E0000303C0000303C0000107C00001078 +000010F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8003FFEF8 +0001F0780000F07C0000F03C0000F03C0000F01E0000F01E0000F00F0000F0078000F003 +C0017000E0023000380C10000FF0001F217E9F24>III<07FFC0003E00001E00001E00001E00001E00001E00001E00001E00001E00 +001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00 +001E00201E00F81E00F81E00F81E00F01C00403C006038001070000FC00012207F9E17> +IIIII<001FE0000070380001C00E00038007 +00070003800F0003C01E0001E03C0000F03C0000F07C0000F87C0000F878000078F80000 +7CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007C780000 +787C0000F87C0000F83C0000F03E0001F01E0001E00F0003C0070003800380070001E01E +0000703800001FE0001E217E9F23>II<001FE0000070380001C00E0003800700070003800F0003C01E0001E03E0001F03C +0000F07C0000F87C0000F878000078F800007CF800007CF800007CF800007CF800007CF8 +00007CF800007CF800007CF800007C780000787C0000F87C0000F83C0000F03E0781F01E +0841E00F1023C0071023800390170001D01E0000783804001FF80400001C0400000C0C00 +000E1C00000FF800000FF8000007F8000007F0000001E01E297E9F23>II<03F0400C0CC01803C03001C06000C0 +6000C0E000C0E00040E00040E00040F00000F800007C00007F80003FF8001FFF0007FF80 +00FFC0001FE00003E00001E00000F0000070800070800070800070800070C00060C000E0 +E000C0F80180C6030081FC0014217E9F19>I<7FFFFFE0780F01E0600F0060400F002040 +0F0020C00F0030800F0010800F0010800F0010800F0010000F0000000F0000000F000000 +0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000 +0F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001C +1F7E9E21>IIII<7FF81FF80FE007C007C0030003C0020003E0060001F0040000F0080000 +F8180000781000003C2000003E6000001E4000000F8000000F8000000780000003C00000 +07E0000005E0000008F0000018F8000010780000207C0000603E0000401E0000801F0001 +000F8001000780020007C0060003C01F0007E0FFC01FFE1F1F7F9E22>I91 D<080410082010201040204020804080408040B85CFC7EFC7E7C +3E381C0F0E7A9F17>II<1FE00030300078180078 +1C00300E00000E00000E00000E0000FE00078E001E0E00380E00780E00F00E10F00E10F0 +0E10F01E10781E103867200F83C014147E9317>97 D<1C0000FC00001C00001C00001C00 +001C00001C00001C00001C00001C00001C00001C00001C7C001D87001E01801E00C01C00 +E01C00701C00701C00781C00781C00781C00781C00781C00781C00701C00F01C00E01E00 +C01A0180198700107C0015207E9F19>I<01FC000706001C0F00380F0038060078000070 +0000F00000F00000F00000F00000F00000F000007000007800003800803800801C010007 +060001F80011147F9314>I<0001C0000FC00001C00001C00001C00001C00001C00001C0 +0001C00001C00001C00001C001F1C0070DC00C03C01801C03801C07801C07001C0F001C0 +F001C0F001C0F001C0F001C0F001C07001C07001C03801C01803C00C03C0070DC001F1F8 +15207F9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF +80F00000F00000F000007000007000003800803800801C010007060001F80011147F9314 +>I<007C01C6030F070F0E060E000E000E000E000E000E000E00FFF00E000E000E000E00 +0E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE01020809F0E> +I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C +001E380033E0002000002000003000003000003FFE001FFF801FFFC03001E0600070C000 +30C00030C00030C000306000603000C01C038003FC00141F7F9417>I<1C0000FC00001C +00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001C86001D +03001E03801E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C +03801C03801C03801C03801C0380FF8FF014207E9F19>I<38007C007C007C0038000000 +000000000000000000001C00FC001C001C001C001C001C001C001C001C001C001C001C00 +1C001C001C001C001C001C00FF80091F7F9E0C>I<00E001F001F001F000E00000000000 +00000000000000007007F000F00070007000700070007000700070007000700070007000 +700070007000700070007000700070007000706070F060F0C061803F000C28829E0E>I< +1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0000 +1C1FE01C07801C06001C04001C08001C10001C20001C60001CE0001DF0001E70001C3800 +1C3C001C1C001C0E001C0F001C07001C07801C07C0FF9FF014207E9F18>I<1C00FC001C +001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C +001C001C001C001C001C001C001C001C001C001C00FF8009207F9F0C>I<1C3E03E000FC +C30C30001D039038001E01E01C001E01E01C001C01C01C001C01C01C001C01C01C001C01 C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0 -1C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>II<03F0000E1C00180600300300700380600180 -E001C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F000 -12127F9115>II<03E0800E198018058038078070038070 -0380E00380E00380E00380E00380E00380E003807003807003803807801807800E1B8003 -E380000380000380000380000380000380000380000380001FF0141A7F9116>II<1F9020704030C010C010E010F8007F803FE00FF000F880388018C018C018E010 -D0608FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C -001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>IIIIII<7FFC70386038407040F040E041C003 -C0038007000F040E041C043C0C380870087038FFF80E127F9112>I -E /FE 47 121 df<07070F1E1C38604080080976A218>19 D45 -D<70F8F8F87005057C840E>I<01F000071C000C06001803003803803803807001C07001 -C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001 -E0F001E0F001E0F001E0F001E07001C07001C07001C07803C03803803803801C07000C06 -00071C0001F00013227EA018>48 D<008003800F80F38003800380038003800380038003 -800380038003800380038003800380038003800380038003800380038003800380038003 -800380038007C0FFFE0F217CA018>I<03F8000C1E00100F002007804007C07807C07803 -C07807C03807C0000780000780000700000F00000C0000380003F000001C00000F000007 -800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C04007802007 -80100F000C1C0003F00013227EA018>51 D<000300000300000700000700000F00001700 -001700002700006700004700008700018700010700020700060700040700080700080700 -100700200700200700400700C00700FFFFF8000700000700000700000700000700000700 -000700000F80007FF015217FA018>I<1000801E07001FFF001FFE001FF80017E0001000 -0010000010000010000010000010000011F800120C001C07001803801003800001C00001 -C00001E00001E00001E00001E07001E0F001E0F001E0E001C08001C04003C04003802007 -001006000C1C0003F00013227EA018>I<007E0001C1000300800601C00C03C01C03C018 -0180380000380000780000700000700000F0F800F30C00F40600F40300F80380F801C0F0 -01C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C03801C01803801C -03000C0600070C0001F00013227EA018>I<4000006000007FFFE07FFFC07FFFC0400080 -C00100800100800200800200000400000800000800001000002000002000006000004000 -00C00000C00001C00001C000018000038000038000038000038000078000078000078000 -07800007800007800007800003000013237DA118>I<01F000060C000C06001807003803 -80700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003 -E03803E01805E00C05E00619E003E1E00001C00001C00001C00003800003803003807807 -00780600700C002018001030000FC00013227EA018>57 D<70F8F8F87000000000000000 -0000000070F8F8F87005157C940E>I<000FE00000701C00008002000300018004000040 -08000020080000201007C01020183008203008084060040440C0078441C0038481C00382 -8380038283800382838003828380038283800382838003828380038281C0038241C00382 -40C007824060078420300B84201831881007C0F00800000008000000040000000300000E -00800078007007C0000FFC001F237DA226>64 D<0001800000018000000180000003C000 -0003C0000003C0000005E0000005E0000009F0000008F0000008F0000010780000107800 -0010780000203C0000203C0000203C0000401E0000401E0000C01F0000800F0000800F00 -01FFFF800100078001000780020003C0020003C0020003C0040001E0040001E0040001E0 -080000F01C0000F03E0001F8FF800FFF20237EA225>II<0007E0100038183000E0063001C0 -0170038000F0070000F00E0000701E0000701C0000303C0000303C0000307C0000107800 -001078000010F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800 -000078000000780000107C0000103C0000103C0000101C0000201E0000200E0000400700 -00400380008001C0010000E0020000381C000007E0001C247DA223>I69 +1C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021147E9326>I<1C7C00FC86001D +03001E03801E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C +03801C03801C03801C03801C0380FF8FF014147E9319>I<01F800070E001C03803801C0 +3801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C0 +3801C01C0380070E0001F80014147F9317>I<1C7C00FD87001E01801E01C01C00E01C00 +F01C00701C00781C00781C00781C00781C00781C00781C00701C00F01C00E01E01C01E03 +801D87001C7C001C00001C00001C00001C00001C00001C00001C00001C0000FF8000151D +7E9319>I<01F040070CC00E02C01C03C03801C07801C07001C0F001C0F001C0F001C0F0 +01C0F001C0F001C07001C07801C03801C01C03C00C05C00709C001F1C00001C00001C000 +01C00001C00001C00001C00001C00001C0000FF8151D7F9318>I<1CF0FD181E3C1E3C1E +181C001C001C001C001C001C001C001C001C001C001C001C001C001C00FFC00E147E9312 +>I<0FC830386018C008C008C008E0007C003FE01FF007F8003C800E8006C006C006C004 +E00CD81887E00F147F9312>I<020002000200060006000E000E003E00FFF80E000E000E +000E000E000E000E000E000E000E000E000E040E040E040E040E040708030801F00E1C7F +9B12>I<1C0380FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03 +801C03801C03801C03801C03801C03801C07800C0780061B8003E3F014147E9319>IIIII<7FFF700E600E401C4038 +4078407000E001E001C00380078007010E011E011C0338027006700EFFFE10147F9314> +I E /FG 47 121 df<07070F1E1C38604080080976A218>19 D +45 D<70F8F8F87005057C840E>I<01F000071C000C06001803003803803803807001C070 +01C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0 +01E0F001E0F001E0F001E0F001E07001C07001C07001C07803C03803803803801C07000C +0600071C0001F00013227EA018>48 D<008003800F80F380038003800380038003800380 +038003800380038003800380038003800380038003800380038003800380038003800380 +03800380038007C0FFFE0F217CA018>I<03F8000C1E00100F002007804007C07807C078 +03C07807C03807C0000780000780000700000F00000C0000380003F000001C00000F0000 +07800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C040078020 +0780100F000C1C0003F00013227EA018>51 D<000300000300000700000700000F000017 +000017000027000067000047000087000187000107000207000607000407000807000807 +00100700200700200700400700C00700FFFFF80007000007000007000007000007000007 +00000700000F80007FF015217FA018>I<1000801E07001FFF001FFE001FF80017E00010 +000010000010000010000010000010000011F800120C001C07001803801003800001C000 +01C00001E00001E00001E00001E07001E0F001E0F001E0E001C08001C04003C040038020 +07001006000C1C0003F00013227EA018>I<007E0001C1000300800601C00C03C01C03C0 +180180380000380000780000700000700000F0F800F30C00F40600F40300F80380F801C0 +F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C03801C0180380 +1C03000C0600070C0001F00013227EA018>I<4000006000007FFFE07FFFC07FFFC04000 +80C001008001008002008002000004000008000008000010000020000020000060000040 +0000C00000C00001C00001C0000180000380000380000380000380000780000780000780 +0007800007800007800007800003000013237DA118>I<01F000060C000C060018070038 +0380700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E070 +03E03803E01805E00C05E00619E003E1E00001C00001C00001C000038000038030038078 +0700780600700C002018001030000FC00013227EA018>57 D<70F8F8F870000000000000 +000000000070F8F8F87005157C940E>I<000FE00000701C000080020003000180040000 +4008000020080000201007C01020183008203008084060040440C0078441C0038481C003 +828380038283800382838003828380038283800382838003828380038281C0038241C003 +8240C007824060078420300B84201831881007C0F0080000000800000004000000030000 +0E00800078007007C0000FFC001F237DA226>64 D<0001800000018000000180000003C0 +000003C0000003C0000005E0000005E0000009F0000008F0000008F00000107800001078 +000010780000203C0000203C0000203C0000401E0000401E0000C01F0000800F0000800F +0001FFFF800100078001000780020003C0020003C0020003C0040001E0040001E0040001 +E0080000F01C0000F03E0001F8FF800FFF20237EA225>II<0007E0100038183000E0063001 +C00170038000F0070000F00E0000701E0000701C0000303C0000303C0000307C00001078 +00001078000010F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8 +00000078000000780000107C0000103C0000103C0000101C0000201E0000200E00004007 +0000400380008001C0010000E0020000381C000007E0001C247DA223>I69 DI120 D -E /FF 10 116 df<78FCFCFCFC7806067B8510>46 D<00FE0003FFC00703E00C01F01000 +E /FH 10 116 df<78FCFCFCFC7806067B8510>46 D<00FE0003FFC00703E00C01F01000 F83C00F83E00FC3E007C3E007C1E00FC0C00FC0000F80000F80000F00001E00001C00003 80000E0001FE000003C00000E00000F800007800007C00003E00003E00003F00003F3000 3F78003FFC003FFC003FFC003EF8003E40007E40007C3000F81800F00F03E003FFC000FE @@ -2688,7 +2969,7 @@ E00F83E00F81C00F80000F00000F00000F00000F00000F00000F00000F00000F00000F00 000F00000F00000F00000F00000F00000F00000F00000F8000FFFC00FFFC00131A7E9917 >114 D<07F0801C0D80300380600180E00180E00080E00080F00080F800007E00007FE0 003FFC001FFE0007FF00003F800007808003C08003C08001C0C001C0C001C0E00180E003 -80F00300CC0E0083F800121A7E9917>I E /FG 59 122 df<000FF000007FFC0001F80E +80F00300CC0E0083F800121A7E9917>I E /FI 59 122 df<000FF000007FFC0001F80E 0003E01F0007C03F000F803F000F803F000F801E000F800C000F8000000F8000000F8000 000F800000FFFFFF00FFFFFF000F801F000F801F000F801F000F801F000F801F000F801F 000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F @@ -2899,7 +3180,7 @@ E18F060001F18F8C0001F3078C0001F3078C0000FF07D80000FE03D80000FE03F800007C 0007C00C0007E00C0003E0180003E0180001F0300001F0300000F8600000F86000007CC0 00007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E0000000C00 00000C00000018000078180000FC380000FC300000FC60000069C000007F8000001F0000 -001B207F951E>I E /FH 25 121 df<00000001E00000000000000003F0000000000000 +001B207F951E>I E /FJ 25 121 df<00000001E00000000000000003F0000000000000 0003F00000000000000007F80000000000000007F80000000000000007F8000000000000 000FFC000000000000000FFC000000000000001FFE000000000000001FFE000000000000 001FFE000000000000003FFF000000000000003FFF000000000000007FFF800000000000 @@ -3143,3446 +3424,3503 @@ TeXDict begin %%EndSetup %%Page: 1 1 -1 0 bop 481 597 a FH(ST)p FG(K)32 b FH(Reference)g(man)m(ual)800 -682 y FF(V)-5 b(ersion)18 b(3.99)808 1095 y FE(Eric)o(k)d(Gallesio)560 -1153 y(Univ)o(ersit)o(\023)-23 b(e)14 b(de)i(Nice)e(-)j(Sophia)g(An)o -(tip)q(olis)494 1211 y(Lab)q(oratoire)h(I3S)f(-)f(CNRS)g(URA)f(1376)j -(-)f(ESSI.)778 1269 y(Route)f(des)h(Colles)866 1327 y(B.P)l(.)e(145)507 -1385 y(06903)k(Sophia-An)o(tip)q(olis)d(Cedex)f(-)i(FRANCE)760 -1471 y(email:)j(eg@unice.fr)1647 2507 y FD(April)13 b(1998)p +1 0 bop 481 609 a FJ(ST)p FI(K)32 b FJ(Reference)g(man)m(ual)800 +701 y FH(V)-5 b(ersion)18 b(3.99)808 1113 y FG(Eric)o(k)d(Gallesio)560 +1171 y(Univ)o(ersit)o(\023)-23 b(e)14 b(de)i(Nice)e(-)j(Sophia)g(An)o +(tip)q(olis)494 1229 y(Lab)q(oratoire)h(I3S)f(-)f(CNRS)g(URA)f(1376)j +(-)f(ESSI.)778 1287 y(Route)f(des)h(Colles)866 1345 y(B.P)l(.)e(145)507 +1404 y(06903)k(Sophia-An)o(tip)q(olis)d(Cedex)f(-)i(FRANCE)760 +1495 y(email:)j(eg@unice.fr)1667 2547 y FF(April)c(1998)p eop %%Page: 2 2 -2 1 bop 75 465 a FC(Do)q(cumen)o(t)14 b(Reference)179 -548 y FD(Eric)o(k)i(Gallesio,)f FB(STk)i(R)n(efer)n(enc)n(e)g(Manual)p -FD(,)g(R)m(T)e(95-31d,)g(I3S-CNRS)h(/)g(Univ)o(ersit)o(\023)-20 -b(e)17 b(de)f(Nice)h(-)179 598 y(Sophia)c(An)o(tip)q(olis,)f(juillet)h -(1995.)p eop +2 1 bop 37 483 a FE(Do)q(cumen)o(t)18 b(Reference)151 +577 y FF(Eric)o(k)13 b(Gallesio,)g FD(STk)g(R)n(efer)n(enc)n(e)f +(Manual)p FF(,)g(R)l(T)g(95-31d,)g(I3S-CNRS)h(/)f(Univ)o(ersit)o(\023) +-21 b(e)13 b(de)f(Nice)151 633 y(-)j(Sophia)h(An)o(tip)q(olis,)h +(juillet)g(1995.)p eop %%Page: 3 3 -3 2 bop 75 511 a FA(Con)m(ten)m(ts)75 727 y FG(I)56 b(Reference)17 -b(Man)n(ual)1215 b(5)137 777 y FD(1)75 b(Ov)o(erview)14 -b(of)f Fz(STk)23 b FD(.)d(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)73 b(7)137 828 y(2)i(Lexical)13 -b(con)o(v)o(en)o(tions)k(.)j(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)73 b(7)233 878 y(2.1)79 b(Iden)o(ti\014ers) -25 b(.)20 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)73 b(7)233 928 y(2.2)79 b(Comm)o(en)o(ts)10 -b(.)20 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)73 b(7)233 978 y(2.3)79 b(Other)15 b(notations)d(.)20 -b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)73 -b(8)137 1028 y(3)i(Basic)14 b(concepts)41 b(.)21 b(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)73 -b(8)137 1078 y(4)i(Expressions)29 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)73 -b(8)233 1129 y(4.1)79 b(Primitiv)o(e)11 b(expression)16 -b(t)o(yp)q(es)g(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)73 -b(8)233 1179 y(4.2)79 b(Deriv)o(ed)14 b(expression)h(t)o(yp)q(es)e(.)20 -b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)73 b(9)137 -1229 y(5)i(Program)12 b(structure)36 b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(10)137 -1279 y(6)75 b(Standard)14 b(pro)q(cedures)28 b(.)21 b(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(10)233 -1329 y(6.1)79 b(Bo)q(oleans)42 b(.)20 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(10)233 1379 -y(6.2)79 b(Equiv)n(alence)13 b(predicates)21 b(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)52 b(11)233 1430 y(6.3)79 b(P)o(airs)13 -b(and)h(lists)43 b(.)20 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)52 b(11)233 1480 y(6.4)79 b(Sym)o(b)q(ols)18 -b(.)j(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)52 b(12)233 1530 y(6.5)79 b(Num)o(b)q(ers)41 -b(.)20 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)52 b(13)233 1580 y(6.6)79 b(Characters)41 -b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)52 b(15)233 1630 y(6.7)79 b(Strings)12 b(.)20 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)52 b(16)233 1680 y(6.8)79 b(V)m(ectors)38 -b(.)21 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)52 b(17)233 1730 y(6.9)79 b(Con)o(trol)13 -b(features)41 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)52 b(18)233 1781 y(6.10)58 b(Input)14 b(and)f(output)k(.)j(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(19)233 1831 y(6.11)58 b(Keyw)o(ords)27 b(.)20 b(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(25)233 1881 y(6.12)58 b(Tk)13 b(commands)c(.)21 b(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(26)233 -1931 y(6.13)58 b(Mo)q(dules)19 b(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(27)233 -1981 y(6.14)58 b(En)o(vironmen)o(ts)16 b(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(30)233 2031 -y(6.15)58 b(Macros)41 b(.)21 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(31)233 2082 -y(6.16)58 b(System)13 b(pro)q(cedures)28 b(.)20 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(32)233 2132 y(6.17)58 -b(Addresses)27 b(.)20 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)52 b(34)233 2182 y(6.18)58 b(Signals)11 -b(.)20 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)52 b(34)233 2232 y(6.19)58 b(Hash)14 -b(tables)25 b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)52 b(36)233 2282 y(6.20)58 b(Regular)13 -b(expressions)41 b(.)21 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)52 b(38)233 2332 y(6.21)58 b(P)o(attern)14 b(matc)o(hing)f(.)20 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(40)233 2383 y(6.22)58 b(Pro)q(cesses)36 b(.)20 b(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(42)233 2433 y(6.23)58 b(So)q(c)o(k)o(ets)38 b(.)21 -b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)52 b(44)233 2483 y(6.24)58 b(F)m(oreign)13 b(F)m(unction)g(In)o -(terface)j(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(47)233 2533 y(6.25)58 b(Miscellaneous)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(50)75 -2677 y FG(I)r(I)j(Annexes)1399 b(57)75 2769 y FC(A)26 -b(Using)14 b(the)h(Tk)i(to)q(olkit)1220 b(59)137 2819 -y FD(1)75 b(Calling)12 b(a)h(Tk-command)g(.)20 b(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(59)946 2924 -y(3)p eop +3 2 bop 37 523 a FC(Con)m(ten)m(ts)37 745 y FI(I)56 b(Reference)17 +b(Man)n(ual)1291 b(5)106 802 y FF(1)81 b(Ov)o(erview)16 +b(of)f FB(STk)23 b FF(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)93 b(7)106 859 y(2)81 b(Lexical)17 b(con)o(v)o(en)o +(tions)i(.)j(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)93 +b(7)210 916 y(2.1)87 b(Iden)o(ti\014ers)27 b(.)c(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)93 b(7)210 972 +y(2.2)87 b(Commen)o(ts)11 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)93 b(7)210 1029 y(2.3)87 b(Other)15 +b(notations)e(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)93 +b(8)106 1086 y(3)81 b(Basic)16 b(concepts)44 b(.)22 b(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)93 b(8)106 +1142 y(4)81 b(Expressions)31 b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)93 b(8)210 1199 +y(4.1)87 b(Primitiv)o(e)16 b(expression)g(t)o(yp)q(es)h(.)23 +b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)93 b(8)210 1256 y(4.2)87 b(Deriv)o(ed)15 +b(expression)h(t)o(yp)q(es)e(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)93 +b(9)106 1313 y(5)81 b(Program)14 b(structure)37 b(.)22 +b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(11)106 1369 y(6)81 b(Standard)15 b(pro)q(cedures)30 +b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(11)210 1426 y(6.1)87 b(Bo)q(oleans)46 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(11)210 1483 +y(6.2)87 b(Equiv)m(alence)17 b(predicates)22 b(.)g(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)71 b(11)210 1540 y(6.3)87 b(P)o(airs)15 b(and)g(lists)47 +b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(12)210 1596 y(6.4)87 b(Sym)o(b)q(ols)23 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(13)210 1653 +y(6.5)87 b(Num)o(b)q(ers)45 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(14)210 1710 y(6.6)87 +b(Characters)43 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)71 b(17)210 1766 y(6.7)87 b(Strings)13 b(.)23 +b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +71 b(18)210 1823 y(6.8)87 b(V)l(ectors)41 b(.)22 b(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(19)210 +1880 y(6.9)87 b(Con)o(trol)14 b(features)44 b(.)22 b(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(20)210 1937 y(6.10)64 +b(Input)16 b(and)f(output)j(.)k(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)71 b(21)210 1993 y(6.11)64 b(Keyw)o(ords)28 b(.)23 +b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(28)210 2050 y(6.12)64 b(Tk)15 b(commands)d(.)22 b(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(29)210 2107 y(6.13)64 +b(Mo)q(dules)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)71 b(30)210 2163 y(6.14)64 b(En)o(vironmen)o(ts)19 +b(.)j(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(34)210 2220 y(6.15)64 b(Macros)44 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(35)210 2277 +y(6.16)64 b(System)15 b(pro)q(cedures)29 b(.)22 b(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)71 b(36)210 2334 y(6.17)64 b(Addresses)27 +b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(39)210 2390 y(6.18)64 b(Signals)14 b(.)23 b(.)f(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(39)210 +2447 y(6.19)64 b(Hash)15 b(tables)28 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(41)210 2504 y(6.20)64 +b(Regular)16 b(expressions)44 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)71 b(44)210 2560 y(6.21)64 b(P)o(attern)14 b(matc)o(hing)i(.)22 +b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(46)210 +2617 y(6.22)64 b(Pro)q(cesses)36 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(49)210 2674 y(6.23)64 +b(So)q(c)o(k)o(ets)41 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)71 b(51)210 2731 y(6.24)64 b(F)l(oreign)15 +b(F)l(unction)h(In)o(terface)g(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(54)210 2787 y(6.25)64 b(Miscellaneous)24 b(.)e(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(58)945 2901 y(3)p +eop %%Page: 4 4 -4 3 bop 75 47 a FC(4)1260 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 137 179 a FD(2)75 b(Asso)q(ciating)14 -b(Callbac)o(ks)f(to)g(Tk-commands)37 b(.)21 b(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(60)137 229 y(3)75 b(Tk)13 b(bindings)22 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(60)75 320 y FC(B)28 b(Di\013erences)14 b(with)g(R4RS)1176 -b(63)137 370 y FD(1)75 b(Sym)o(b)q(ols)22 b(.)f(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(63)137 420 y(2)75 b(T)o(yp)q(es)34 b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)52 b(64)137 469 y(3)75 b(Pro)q(cedures)42 b(.)20 b(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(64)75 561 y FC(C)28 b(An)16 b(in)o(tro)q(duct)o(ion)c(to)j -Fz(STklos)1092 b FC(67)137 610 y FD(1)75 b(In)o(tro)q(duction)13 -b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)52 b(67)137 660 y(2)75 b(Class)14 -b(de\014nition)f(and)h(instan)o(tiation)22 b(.)f(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)52 b(67)233 710 y(2.1)79 b(Class)13 b(de\014nition)22 -b(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(67)137 760 y(3)75 b(Inheritance)37 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(68)233 810 y(3.1)79 b(Class)13 b(hierarc)o(h)o(y)i(and)e(inheritance) -i(of)e(slots)40 b(.)20 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(68)233 860 y(3.2)79 -b(Instance)15 b(creation)f(and)g(slot)f(access)33 b(.)21 -b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)52 b(69)233 909 y(3.3)79 b(Slot)13 -b(description)18 b(.)i(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)52 b(69)233 959 y(3.4)79 b(Class)13 b(precedence)k(list)23 -b(.)e(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(72)137 1009 y(4)75 b(Generic)14 b(functions)20 b(.)g(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(73)233 1059 y(4.1)79 b(Generic)14 b(functions)g(and)g(metho)q(ds)25 -b(.)20 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(73)233 1109 y(4.2)79 -b(Next-metho)q(d)29 b(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)52 b(74)233 1158 y(4.3)79 b(Example)11 -b(.)21 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)52 b(75)75 1250 y FC(D)25 b(Mo)q(dules:)20 -b(Examples)1240 b(77)75 1341 y(E)31 b(Changes)1477 b(79)75 -1432 y(F)32 b(Miscellaneous)13 b(Informations)1079 b(81)137 -1482 y FD(1)75 b(In)o(tro)q(duction)13 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(81)137 1532 y(2)75 b(Ab)q(out)14 b Fz(STk)27 b FD(.)20 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)52 b(81)233 1582 y(2.1)79 b(Latest)14 -b(release)22 b(.)f(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)52 b(81)233 1632 y(2.2)79 b(Sharing)13 b(Co)q(de)23 -b(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -52 b(81)233 1681 y(2.3)79 b Fz(STk)14 b FD(Mailing)e(list)28 -b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(81)233 1731 y(2.4)79 b Fz(STk)14 b FD(F)-5 b(A)o(Q)22 -b(.)e(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)52 b(82)233 1781 y(2.5)79 b(Rep)q(orting)13 b(a)h(bug)36 -b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(82)137 1831 y(3)75 b Fz(STk)14 b FD(and)g(Emacs)39 -b(.)20 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)52 b(82)233 1881 y(3.1)79 b(Using)13 b(the)i(SLIB)f(pac)o(k) -n(age)g(with)f Fz(STk)28 b FD(.)20 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(83)137 1931 y(4)75 b(Getting)13 b(information)e(ab)q(out)j(Sc)o(heme) -29 b(.)20 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(83)233 -1980 y(4.1)79 b(The)14 b FB(R)481 1965 y Fy(4)493 1980 -y Fx(RS)i FD(do)q(cumen)o(t)j(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)52 b(83)233 2030 y(4.2)79 b(The)14 b(Sc)o(heme)g(Rep)q -(ository)31 b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)52 -b(83)233 2080 y(4.3)79 b(Usenet)15 b(newsgroup)g(and)e(other)i -(addresses)21 b(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)52 b(84)p eop +4 3 bop 37 45 a FE(4)1288 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a FI(I)r(I)56 b(Annexes)1474 b(65)37 +292 y FE(A)29 b(Using)18 b(the)f(Tk)h(to)q(olkit)1248 +b(67)106 349 y FF(1)81 b(Calling)17 b(a)e(Tk-command)h(.)23 +b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(67)106 405 y(2)81 b(Asso)q(ciating)16 b(Callbac)o(ks)g(to)f +(Tk-commands)43 b(.)22 b(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(68)106 462 y(3)81 +b(Tk)15 b(bindings)26 b(.)c(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(69)37 564 y FE(B)32 +b(Di\013erences)16 b(with)j(R4RS)1196 b(71)106 620 y +FF(1)81 b(Sym)o(b)q(ols)27 b(.)c(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(71)106 +677 y(2)81 b(T)o(yp)q(es)37 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(73)106 733 y(3)81 b(Pro)q(cedures)44 b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(73)37 +835 y FE(C)31 b(An)17 b(in)o(tro)q(duction)i(to)f FB(STklos)1101 +b FE(75)106 891 y FF(1)81 b(In)o(tro)q(duction)15 b(.)22 +b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)71 b(75)106 948 y(2)81 b(Class)15 b(de\014nition)i(and)f(instan)o +(tiation)26 b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(75)210 +1004 y(2.1)87 b(Class)15 b(de\014nition)25 b(.)e(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(75)106 1061 y(3)81 b(Inheritance)41 +b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)71 b(76)210 1117 y(3.1)87 b(Class)15 b(hierarc)o(h)o(y)g +(and)h(inheritance)h(of)d(slots)43 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(76)210 1174 y(3.2)87 +b(Instance)15 b(creation)h(and)f(slot)g(access)35 b(.)22 +b(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)71 b(77)210 1230 y(3.3)87 b(Slot)15 b(description)20 +b(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(78)210 1287 y(3.4)87 b(Class)15 b(precedence)i(list)26 +b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(81)106 +1343 y(4)81 b(Generic)16 b(functions)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(82)210 1399 +y(4.1)87 b(Generic)16 b(functions)g(and)f(metho)q(ds)28 +b(.)23 b(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)71 b(82)210 1456 y(4.2)87 b(Next-metho)q(d)33 +b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(83)210 1512 y(4.3)87 b(Example)15 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(84)37 1614 +y FE(D)29 b(Mo)q(dules:)23 b(Examples)1266 b(87)37 1716 +y(E)35 b(Changes)1525 b(91)37 1818 y(F)36 b(Miscellaneous)18 +b(Informations)1093 b(95)106 1875 y FF(1)81 b(In)o(tro)q(duction)15 +b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)71 b(95)106 1931 y(2)81 b(Ab)q(out)16 b FB(STk)28 +b FF(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)71 b(95)210 1987 y(2.1)87 b(Latest)14 b(release)24 +b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(95)210 2044 y(2.2)87 b(Sharing)15 b(Co)q(de)26 b(.)c(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(95)210 2100 +y(2.3)87 b FB(STk)14 b FF(Mailing)j(list)32 b(.)22 b(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(95)210 2157 y(2.4)87 +b FB(STk)14 b FF(F)-5 b(A)o(Q)23 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(96)210 2213 y(2.5)87 +b(Rep)q(orting)16 b(a)f(bug)40 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)71 b(96)106 2270 y(3)81 b FB(STk)15 b FF(and)g(Emacs)43 +b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(96)210 2326 y(3.1)87 b(Using)15 b(the)h(SLIB)g(pac)o(k)m(age)f(with)h +FB(STk)29 b FF(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(97)106 2383 y(4)81 b(Getting)15 +b(information)h(ab)q(out)f(Sc)o(heme)32 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.) +f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 +b(97)210 2439 y(4.1)87 b(The)15 b FD(R)482 2423 y FA(4)494 +2439 y Fz(RS)j FF(do)q(cumen)o(t)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)71 b(97)210 2496 y(4.2)87 b(The)15 b(Sc)o(heme)h(Rep)q(ository)35 +b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(98)210 2552 +y(4.3)87 b(Usenet)15 b(newsgroup)g(and)h(other)f(addresses)21 +b(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)71 b(98)p eop %%Page: 5 5 -5 4 bop 828 1059 a FH(P)m(art)32 b(I)497 1266 y FA(Reference)38 -b(Man)m(ual)946 2924 y FD(5)p eop +5 4 bop 828 1056 a FJ(P)m(art)32 b(I)497 1264 y FC(Reference)38 +b(Man)m(ual)945 2901 y FF(5)p eop %%Page: 6 6 6 5 bop eop %%Page: 7 7 -7 6 bop 75 179 a Fw(In)n(tro)r(duction)75 278 y FD(This)16 -b(do)q(cumen)o(t)f(pro)o(vides)h(a)g(complete)f(list)g(of)g(pro)q -(cedures)j(and)e(sp)q(ecial)g(forms)e(implemen)o(ted)g(in)h(v)o(ersion) -75 328 y(3.99)d(of)g Fz(STk)p FD(.)18 b(Since)13 b Fz(STk)g -FD(is)g(\(nearly\))g(complian)o(t)e(with)h(the)i(language)d(describ)q -(ed)k(in)d(the)i FB(R)n(evise)n(d)1686 313 y Fy(4)1719 -328 y FB(R)n(ep)n(ort)75 378 y(on)d(the)g(A)o(lgorithmic)f(L)n(anguage) -i(Scheme)f FD(\(denoted)f FB(R)942 363 y Fy(4)954 378 -y Fx(RS)j FD(hereafter)1183 363 y Fy(1)1203 378 y FD(\)[1)o(],)d(the)g -(organization)e(of)h(this)h(man)o(ual)75 428 y(follo)o(ws)i(the)j -FB(R)313 413 y Fy(4)325 428 y Fx(RS)h FD(and)e(only)f(describ)q(es)j -(extensions.)75 589 y Fw(1)67 b(Ov)n(erview)23 b(of)f -Fv(STk)75 689 y FD(T)m(o)q(da)o(y's)14 b(graphical)g(to)q(olkits)g(for) -h(applicativ)o(e)f(languages)g(are)h(often)g(not)g(satisfactory)m(.)21 -b(Most)15 b(of)g(the)g(time,)75 738 y(they)d(ask)g(the)h(user)g(to)e(b) -q(e)i(an)f(X)g(windo)o(w)f(system)23 b(exp)q(ert)13 b(and)f(force)h -(him/her)d(to)i(cop)q(e)h(with)e(arcane)i(details)75 -788 y(suc)o(h)g(as)f(serv)o(er)i(connections)g(and)e(ev)o(en)o(t)h -(queues.)18 b(This)13 b(is)f(a)g(real)g(problem,)f(since)i(programmers) -d(using)i(this)75 838 y(kind)i(of)f(languages)g(are)i(generally)e(not)h -(inclined)g(to)g(system)g(programmi)o(ng,)c(and)k(few)g(of)g(them)f -(will)f(bridge)75 888 y(the)i(gap)g(b)q(et)o(w)o(een)h(the)g -(di\013eren)o(t)g(abstraction)f(lev)o(els.)124 942 y(Tk)e(is)h(a)f(p)q -(o)o(w)o(erful)g(graphical)f(to)q(olkit)g(promising)g(to)h(\014ll)f -(that)i(gap.)k(It)12 b(w)o(as)g(dev)o(elop)q(ed)h(at)g(the)g(Univ)o -(ersit)o(y)75 992 y(of)19 b(Berk)o(eley)h(b)o(y)f(John)h(Ousterhout)h -([2)o(].)34 b(The)20 b(to)q(olkit)e(o\013ers)j(high)d(lev)o(el)h -(widgets)h(suc)o(h)g(as)g(buttons)f(or)75 1042 y(men)o(us)13 -b(and)g(is)h(easily)f(programmabl)o(e,)e(requiring)i(little)g(kno)o -(wledge)h(of)f(X)g(fundamen)o(tals.)k(Tk)c(relies)h(on)g(an)75 -1092 y(in)o(terpretativ)o(e)h(shell-lik)o(e)e(language)g(named)f(Tcl)i -([3)o(].)134 1146 y Fz(STk)h FD(is)g(an)g(implemen)o(tati)o(on)d(of)i -(the)i(Sc)o(heme)f(programmi)o(ng)d(language,)h(pro)o(viding)h(a)h -(full)e(in)o(tegration)75 1196 y(of)i(the)g(Tk)g(to)q(olkit.)21 -b(In)15 b(this)g(implemen)o(tation,)c(Sc)o(heme)k(establishes)i(the)e -(link)f(b)q(et)o(w)o(een)j(the)f(user)g(and)f(the)75 -1246 y(Tk)f(to)q(olkit,)e(replacing)i(Tcl.)75 1407 y -Fw(2)67 b(Lexical)24 b(con)n(v)n(en)n(tions)75 1515 y -FG(2.1)56 b(Iden)n(ti\014ers)75 1600 y FD(Syn)o(tactic)15 -b(k)o(eyw)o(ords)f(can)h(b)q(e)g(used)g(as)g(v)n(ariables)f(in)g -Fz(STk)p FD(.)19 b(Users)d(m)o(ust)e(b)q(e)h(a)o(w)o(are)f(that)h(this) -f(extension)h(of)75 1650 y(the)f(language)f(could)h(lead)g(to)g(am)o -(biguiti)o(es)e(in)h(some)g(situations.)75 1790 y FG(2.2)56 -b(Commen)n(ts)75 1875 y FD(There)15 b(are)f(three)i(t)o(yp)q(es)e(of)g -(commen)o(ts)e(in)h Fz(STk)p FD(:)126 1972 y(1.)20 b(a)14 -b(semicolon)e(\(;\))i(indicates)h(the)f(start)h(of)e(a)h(commen)o(t.)j -(This)d(kind)f(of)h(commen)o(t)e(extends)j(to)f(the)h(end)179 -2022 y(of)e(the)i(line)e(\(as)h(describ)q(ed)i(in)d FB(R)705 -2007 y Fy(4)717 2022 y Fx(RS)r FD(\).)126 2123 y(2.)20 -b(m)o(ulti-li)o(nes)12 b(commen)o(t)g(use)j(the)f(classical)g(lisp)g -(con)o(v)o(en)o(tions:)k(a)13 b(commen)o(t)f(b)q(egins)j(with)e -Fu(#|)h FD(and)g(ends)179 2173 y(with)f Fu(|#)p FD(.)126 -2270 y(3.)20 b(commen)o(ts)15 b(can)i(also)f(b)q(e)h(in)o(tro)q(duced)h -(b)o(y)f Fu(#)p FD(!.)26 b(This)16 b(extension)i(is)f(particularly)f -(useful)g(for)h(building)179 2316 y Fz(STk)d FD(scripts.)19 -b(On)14 b(most)f(Unix)h(implem)o(en)o(tations,)d(if)i(the)h(\014rst)h -(line)e(of)h(a)f(script)i(lo)q(oks)e(lik)o(e)g(this:)336 -2429 y Ft(#)p Fs(!)p Ft(/usr/lo)o(ca)o(l/b)o(in/)o(st)o(k)k(-file)179 -2593 y FD(then)12 b(the)g(script)g(can)g(b)q(e)g(started)g(directly)g -(as)f(if)g(it)g(w)o(ere)h(a)f(binary)m(.)17 b Fz(STk)11 -b FD(is)h(loaded)f(b)q(ehind)g(the)h(scenes)179 2643 -y(and)j(reads)g(and)g(executes)i(the)f(script)g(as)f(a)f(Sc)o(heme)h -(program.)20 b(Of)15 b(course)h(this)f(assumes)g(that)g -Fz(STk)179 2693 y FD(is)f(lo)q(cated)g(in)f Fu(/usr/local/bin)p -FD(.)p 75 2741 705 2 v 121 2768 a Fr(1)139 2779 y Fq(The)21 -b Fp(R)n(evise)n(d)335 2768 y Fr(4)375 2779 y Fp(R)n(ep)n(ort)i(on)f -(the)g(A)o(lgorithmic)h(L)n(anguage)h(Scheme)f Fq(is)e(a)o(v)n(ailable) -e(through)g(anon)o(ymous)f(FTP)k(from)75 2819 y Fo(ftp.cs.ind)o(ian)o -(a.e)o(du)8 b Fq(in)j(the)g(directory)e Fo(/pub/scheme)o(-re)o(pos)o -(it)o(ory)o(/do)o(c)946 2924 y FD(7)p eop +7 6 bop 37 190 a Fy(In)n(tro)r(duction)37 295 y FF(This)11 +b(do)q(cumen)o(t)g(pro)o(vides)g(a)e(complete)i(list)g(of)f(pro)q +(cedures)h(and)f(sp)q(ecial)i(forms)e(implemen)o(ted)i(in)f(v)o(ersion) +37 352 y(3.99)17 b(of)g FB(STk)p FF(.)26 b(Since)19 b +FB(STk)e FF(is)i(\(nearly\))e(complian)o(t)h(with)g(the)g(language)g +(describ)q(ed)h(in)g(the)e FD(R)n(evise)n(d)1856 335 +y FA(4)37 408 y FD(R)n(ep)n(ort)h(on)f(the)g(A)o(lgorithmic)g(L)n +(anguage)g(Scheme)e FF(\(denoted)i FD(R)1167 392 y FA(4)1179 +408 y Fz(RS)i FF(hereafter)1437 392 y FA(1)1456 408 y +FF(\)[1)o(],)d(the)g(organization)37 465 y(of)f(this)h(man)o(ual)f +(follo)o(ws)h(the)f FD(R)599 448 y FA(4)611 465 y Fz(RS)j +FF(and)d(only)h(describ)q(es)h(extensions.)37 618 y Fy(1)67 +b(Ov)n(erview)23 b(of)f Fx(STk)37 723 y FF(T)l(o)q(da)o(y's)c +(graphical)h(to)q(olkits)f(for)g(applicativ)o(e)i(languages)e(are)g +(often)g(not)f(satisfactory)l(.)28 b(Most)17 b(of)h(the)37 +779 y(time,)g(they)g(ask)f(the)g(user)g(to)g(b)q(e)h(an)f(X)g(windo)o +(w)h(system)34 b(exp)q(ert)18 b(and)f(force)g(him/her)h(to)f(cop)q(e)h +(with)37 836 y(arcane)i(details)h(suc)o(h)g(as)e(serv)o(er)h +(connections)h(and)f(ev)o(en)o(t)g(queues.)35 b(This)21 +b(is)f(a)g(real)g(problem,)i(since)37 892 y(programmers)13 +b(using)j(this)e(kind)i(of)d(languages)i(are)f(generally)h(not)f +(inclined)j(to)d(system)g(programming,)37 949 y(and)i(few)f(of)g(them)g +(will)i(bridge)f(the)f(gap)g(b)q(et)o(w)o(een)g(the)h(di\013eren)o(t)f +(abstraction)g(lev)o(els.)116 1007 y(Tk)k(is)i(a)e(p)q(o)o(w)o(erful)h +(graphical)g(to)q(olkit)g(promising)h(to)e(\014ll)i(that)e(gap.)33 +b(It)20 b(w)o(as)f(dev)o(elop)q(ed)i(at)e(the)37 1063 +y(Univ)o(ersit)o(y)e(of)f(Berk)o(eley)h(b)o(y)f(John)g(Ousterhout)g +([2].)22 b(The)16 b(to)q(olkit)g(o\013ers)g(high)g(lev)o(el)i(widgets)e +(suc)o(h)g(as)37 1120 y(buttons)g(or)e(men)o(us)i(and)f(is)h(easily)g +(programmable,)f(requiring)h(little)h(kno)o(wledge)f(of)f(X)g(fundamen) +o(tals.)37 1176 y(Tk)g(relies)i(on)e(an)g(in)o(terpretativ)o(e)h +(shell-lik)o(e)i(language)d(named)h(Tcl)f([3].)79 1234 +y FB(STk)10 b FF(is)h(an)f(implemen)o(tation)i(of)e(the)h(Sc)o(heme)g +(programming)e(language,)j(pro)o(viding)f(a)f(full)i(in)o(tegration)37 +1291 y(of)k(the)g(Tk)f(to)q(olkit.)22 b(In)16 b(this)h(implemen)o +(tation,)f(Sc)o(heme)h(establishes)g(the)f(link)h(b)q(et)o(w)o(een)f +(the)g(user)g(and)37 1347 y(the)g(Tk)f(to)q(olkit,)g(replacing)h(Tcl.) +37 1500 y Fy(2)67 b(Lexical)24 b(con)n(v)n(en)n(tions)37 +1607 y FI(2.1)56 b(Iden)n(ti\014ers)37 1696 y FF(Syn)o(tactic)14 +b(k)o(eyw)o(ords)e(can)h(b)q(e)h(used)g(as)e(v)m(ariables)j(in)f +FB(STk)p FF(.)k(Users)13 b(m)o(ust)g(b)q(e)g(a)o(w)o(are)f(that)h(this) +g(extension)37 1753 y(of)i(the)h(language)f(could)h(lead)g(to)f(am)o +(biguities)h(in)g(some)f(situations.)37 1884 y FI(2.2)56 +b(Commen)n(ts)37 1974 y FF(There)16 b(are)f(three)g(t)o(yp)q(es)g(of)g +(commen)o(ts)g(in)h FB(STk)p FF(:)93 2074 y(1.)22 b(a)15 +b(semicolon)h(\(;\))e(indicates)j(the)e(start)e(of)i(a)g(commen)o(t.)k +(This)d(kind)g(of)e(commen)o(t)h(extends)g(to)g(the)151 +2131 y(end)h(of)f(the)g(line)i(\(as)d(describ)q(ed)k(in)e +FD(R)814 2114 y FA(4)826 2131 y Fz(RS)s FF(\).)93 2232 +y(2.)22 b(m)o(ulti-lines)d(commen)o(t)d(use)h(the)f(classical)i(Lisp)f +(con)o(v)o(en)o(tion:)23 b(a)16 b(commen)o(t)g(b)q(egins)h(with)g +Fw(#|)f FF(and)151 2288 y(ends)g(with)f Fw(|#)p FF(.)93 +2382 y(3.)22 b(commen)o(ts)11 b(can)h(also)f(b)q(e)i(in)o(tro)q(duced)g +(b)o(y)e Fw(#)p FF(!.)18 b(This)12 b(extension)h(is)f(particularly)h +(useful)f(for)f(building)151 2432 y FB(STk)21 b FF(scripts.)39 +b(On)22 b(most)e(Unix)i(implemen)o(tations,)i(if)e(the)f(\014rst)g +(line)i(of)e(a)g(script)h(lo)q(oks)g(lik)o(e)151 2482 +y(this:)325 2596 y Fv(#)p Fu(!)p Fv(/usr/local/bin/s)o(tk)d(-file)p +37 2699 735 2 v 89 2726 a Ft(1)107 2742 y Fs(The)f Fr(R)n(evise)n(d)317 +2726 y Ft(4)350 2742 y Fr(R)n(ep)n(ort)f(on)h(the)f(A)o(lgorithmic)f(L) +n(anguage)g(Scheme)g Fs(is)j(a)o(v)n(ailable)h(through)g(anon)o(ymous)f +(FTP)f(from)37 2787 y Fq(ftp.cs.indi)o(an)o(a.e)o(du)9 +b Fs(in)14 b(the)f(directory)i Fq(/pub/sche)o(me)o(-re)o(po)o(sit)o +(ory)o(/d)o(oc)945 2901 y FF(7)p eop %%Page: 8 8 -8 7 bop 75 47 a FC(8)1260 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a FG(2.3)56 b(Other)18 b(notations)75 -255 y Fz(STk)c FD(accepts)i(all)c(the)j(notations)e(de\014ned)i(in)f -FB(R)852 240 y Fy(4)864 255 y Fx(RS)i FD(plus)75 339 -y Fu([)22 b(])42 b FD(Brac)o(k)o(ets)12 b(are)f(equiv)n(alen)o(t)f(to)h -(paren)o(theses.)19 b(They)11 b(are)h(used)f(for)g(grouping)f(and)g(to) -h(notate)g(lists.)17 b(A)11 b(list)179 389 y(op)q(ened)k(with)e(a)h -(left)f(square)i(brac)o(k)o(et)g(m)o(ust)d(b)q(e)j(closed)f(with)g(a)g -(righ)o(t)f(square)i(brac)o(k)o(et)f(\(section)h(6.3\).)75 -469 y Fu(:)21 b FD(A)c(colon)f(at)h(the)h(b)q(eginning)e(of)h(a)g(sym)o -(b)q(ol)e(in)o(tro)q(duces)j(a)f(k)o(eyw)o(ord.)27 b(Keyw)o(ords)18 -b(are)g(describ)q(ed)h(in)d(sec-)179 519 y(tion)d(6.11.)75 -595 y Fu(#.)19 b FD(is)g(read)g(as)f(the)i(ev)n(aluation)d(of)h -(the)h(Sc)o(heme)g(expression)g Fu()p FD(.)31 b(The)19 -b(ev)n(aluation)f(is)g(done)179 640 y(during)i(the)g -Fu(read)g FD(pro)q(cess,)j(when)d(the)h Fu(#)p FB(.)f -FD(is)g(encoun)o(tered.)39 b(Ev)n(aluation)18 b(is)i(done)h(in)e(the)i -(global)179 686 y(en)o(vironmen)o(t.)336 774 y Ft(\(define)c(foo)h(1\)) -336 819 y(#.foo)453 865 y Fs(=)-6 b Fn(\))20 b Ft(1)336 -911 y('\(foo)d(#.foo)h(#.\(+)g(foo)h(foo\)\))453 956 -y Fs(=)-6 b Fn(\))20 b Ft(\(foo)e(1)h(2\))336 1002 y(\(let)f(\(\(foo)f -(2\)\))395 1048 y(#.foo\))453 1093 y Fs(=)-6 b Fn(\))20 -b Ft(1)75 1321 y Fw(3)67 b(Basic)22 b(concepts)75 1412 -y FB(Identic)n(al)15 b(to)g(R)325 1397 y Fy(4)344 1412 -y FB(RS.)75 1548 y Fw(4)67 b(Expressions)75 1647 y FG(4.1)56 -b(Primitiv)n(e)15 b(expression)j(t)n(yp)r(es)75 1777 -y Fu(\(quote)j Fm(h)p FD(datum)p Fm(i)n Fu(\))1320 b -FD(syn)o(tax)75 1827 y Fu(')p Fm(h)p FD(datum)p Fm(i)1471 -b FD(syn)o(tax)75 1896 y(The)12 b(quoting)e(mec)o(hanism)f(is)j(iden)o -(tical)e(to)i FB(R)800 1881 y Fy(4)812 1896 y Fx(RS)r -FD(.)17 b(Keyw)o(ords)c(\(see)f(section)g(6.11\),)f(as)g(n)o(umerical)f -(constan)o(ts,)75 1942 y(string)k(constan)o(ts,)h(c)o(haracter)g -(constan)o(ts,)g(and)f(b)q(o)q(olean)g(constan)o(ts)h(ev)n(aluate)e -(\\to)h(themselv)o(es";)g(they)g(need)75 1987 y(not)g(b)q(e)g(quoted.) -153 2060 y Ft('"abc")430 b Fs(=)-6 b Fn(\))39 b Ft("abc")153 -2106 y("abc")450 b Fs(=)-6 b Fn(\))39 b Ft("abc")153 -2151 y('145932)410 b Fs(=)-6 b Fn(\))39 b Ft(145932)153 -2197 y(145932)430 b Fs(=)-6 b Fn(\))39 b Ft(145932)153 -2243 y('#t)490 b Fs(=)-6 b Fn(\))39 b Ft(#t)153 2288 -y(#t)510 b Fs(=)-6 b Fn(\))39 b Ft(#t)153 2334 y(':key)450 -b Fs(=)-6 b Fn(\))39 b Ft(:key)153 2380 y(:key)470 b -Fs(=)-6 b Fn(\))39 b Ft(:key)75 2502 y Fl(Note:)32 b(R)227 -2486 y Fr(4)238 2502 y Fk(RS)16 b Fs(requires)e(to)f(quote)h(constan)o -(t)g(lists)g(and)g(constan)o(t)g(v)o(ectors.)j(This)d(is)f(not)h -(necessary)g(with)f Fj(STk)p Fs(.)75 2599 y Fu(\()p Fm(h)p -FD(op)q(erator)p Fm(i)22 b(h)p FD(op)q(erand)466 2605 -y Fy(1)486 2599 y Fm(i)g Fx(:)7 b(:)g(:)e Fu(\))1118 -b FD(syn)o(tax)75 2672 y FB(Identic)n(al)15 b(to)g(R)325 -2657 y Fy(4)344 2672 y FB(RS.)f FD(F)m(urthermore,)f -Fm(h)p FD(op)q(erator)p Fm(i)i FD(can)f(b)q(e)g(a)g(macro)f(\(see)i -(section)f(6.15\).)75 2769 y Fu(\(lambda)20 b Fm(h)p -FD(formals)p Fm(i)g(h)p FD(b)q(o)q(dy)p Fm(i)q Fu(\))1137 -b FD(syn)o(tax)75 2819 y Fu(\(if)21 b Fm(h)p FD(test)p -Fm(i)i(h)p FD(consequen)o(t)p Fm(i)h(h)p FD(alternate)p -Fm(i)q Fu(\))967 b FD(syn)o(tax)p eop +8 7 bop 37 45 a FE(8)1288 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 151 190 a FF(then)f(the)f(script)g(can)g(b)q(e)h +(started)e(directly)j(as)d(if)i(it)f(w)o(ere)g(a)f(binary)l(.)21 +b FB(STk)14 b FF(is)i(loaded)g(b)q(ehind)h(the)151 247 +y(scenes)f(and)f(reads)g(and)g(executes)h(the)f(script)g(as)g(a)f(Sc)o +(heme)i(program.)j(Of)c(course)g(this)g(assumes)151 303 +y(that)g FB(STk)f FF(is)i(lo)q(cated)g(in)g Fw(/usr/local/bin)p +FF(.)37 426 y FI(2.3)56 b(Other)18 b(notations)37 513 +y FB(STk)d FF(accepts)g(all)i(the)e(notations)g(de\014ned)h(in)g +FD(R)888 496 y FA(4)900 513 y Fz(RS)i FF(plus)37 620 +y Fw([)24 b(])47 b FF(Brac)o(k)o(ets)13 b(are)i(equiv)m(alen)o(t)h(to)e +(paren)o(theses.)19 b(They)c(are)f(used)i(for)d(grouping)i(and)g(to)f +(notate)g(lists.)151 677 y(A)20 b(list)h(op)q(ened)g(with)f(a)g(left)g +(square)g(brac)o(k)o(et)f(m)o(ust)g(b)q(e)i(closed)f(with)h(a)e(righ)o +(t)h(square)g(brac)o(k)o(et)151 733 y(\(section)c(6.3\).)37 +828 y Fw(:)23 b FF(A)c(colon)g(at)f(the)h(b)q(eginning)i(of)d(a)g(sym)o +(b)q(ol)h(in)o(tro)q(duces)h(a)e(k)o(eyw)o(ord.)30 b(Keyw)o(ords)18 +b(are)h(describ)q(ed)h(in)151 884 y(section)c(6.11.)37 +973 y Fw(#.)22 b FF(is)h(read)e(as)h(the)g(ev)m(aluation)h(of)f +(the)g(Sc)o(heme)g(expression)h Fw()p FF(.)39 b(The)22 +b(ev)m(aluation)h(is)151 1022 y(done)18 b(during)h(the)f +Fw(read)g FF(pro)q(cess,)g(when)h(the)f Fw(#)p FD(.)f +FF(is)i(encoun)o(tered.)28 b(Ev)m(aluation)19 b(is)g(done)f(in)h(the) +151 1072 y(en)o(vironmen)o(t)d(of)e(the)i(curren)o(t)f(mo)q(dule.)325 +1179 y Fv(\(define)21 b(foo)g(1\))325 1229 y(#.foo)456 +1279 y Fu(=)-7 b Fp(\))22 b Fv(1)325 1329 y('\(foo)f(#.foo)g(#.\(+)g +(foo)g(foo\)\))456 1379 y Fu(=)-7 b Fp(\))22 b Fv(\(foo)f(1)g(2\))325 +1428 y(\(let)g(\(\(foo)g(2\)\))391 1478 y(#.foo\))456 +1528 y Fu(=)-7 b Fp(\))22 b Fv(1)37 1722 y Fy(3)67 b(Basic)22 +b(concepts)37 1824 y FD(Identic)n(al)15 b(to)i(R)311 +1808 y FA(4)331 1824 y FD(RS.)37 1969 y Fy(4)67 b(Expressions)37 +2073 y FI(4.1)56 b(Primitiv)n(e)16 b(expression)h(t)n(yp)r(es)37 +2220 y Fw(\(quote)24 b Fo(h)p FF(datum)p Fo(i)o Fw(\))1352 +b FF(syn)o(tax)37 2277 y Fw(')p Fo(h)p FF(datum)p Fo(i)1519 +b FF(syn)o(tax)37 2350 y(The)15 b(quoting)g(mec)o(hanism)g(is)g(iden)o +(tical)h(to)e FD(R)843 2334 y FA(4)855 2350 y Fz(RS)s +FF(.)19 b(Keyw)o(ords)14 b(\(see)g(section)h(6.11\),)e(as)h(n)o +(umerical)i(con-)37 2400 y(stan)o(ts,)c(string)g(constan)o(ts,)g(c)o +(haracter)f(constan)o(ts,)h(and)h(b)q(o)q(olean)g(constan)o(ts)e(ev)m +(aluate)j(\\to)d(themselv)o(es";)37 2450 y(they)16 b(need)g(not)f(b)q +(e)h(quoted.)125 2538 y Fv('"abc")478 b Fu(=)-7 b Fp(\))43 +b Fv("abc")125 2588 y("abc")500 b Fu(=)-7 b Fp(\))43 +b Fv("abc")125 2638 y('145932)456 b Fu(=)-7 b Fp(\))43 +b Fv(145932)125 2688 y(145932)478 b Fu(=)-7 b Fp(\))43 +b Fv(145932)125 2738 y('#t)544 b Fu(=)-7 b Fp(\))43 b +Fv(#t)125 2787 y(#t)566 b Fu(=)-7 b Fp(\))43 b Fv(#t)p +eop %%Page: 9 9 -9 8 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1259 -b(9)p 75 64 1763 2 v 75 179 a Fu(\(if)21 b Fm(h)p FD(test)p -Fm(i)i(h)p FD(consequen)o(t)p Fm(i)r Fu(\))1183 b FD(syn)o(tax)75 -229 y Fu(\(set!)21 b Fm(h)p FD(v)n(ariable)p Fm(i)g(h)p -FD(expression)p Fm(i)q Fu(\))1077 b FD(syn)o(tax)75 302 -y FB(Identic)n(al)15 b(to)g(R)325 287 y Fy(4)344 302 -y FB(RS.)75 416 y FG(4.2)56 b(Deriv)n(ed)17 b(expression)g(t)n(yp)r(es) -75 548 y Fu(\(cond)k Fm(h)p FD(clause)330 554 y Fy(1)349 -548 y Fm(i)h(h)p FD(clause)511 554 y Fy(2)530 548 y Fm(i)g -Fx(:)7 b(:)g(:)f Fu(\))1073 b FD(syn)o(tax)75 598 y Fu(\(case)21 -b Fm(h)p FD(k)o(ey)p Fm(i)h(h)p FD(clause)445 604 y Fy(1)464 -598 y Fm(i)g(h)p FD(clause)626 604 y Fy(2)646 598 y Fm(i)g -Fx(:)7 b(:)g(:)e Fu(\))958 b FD(syn)o(tax)75 648 y Fu(\(and)21 -b Fm(h)p FD(test)266 654 y Fy(1)286 648 y Fm(i)h Fx(:)7 -b(:)g(:)e Fu(\))1318 b FD(syn)o(tax)75 698 y Fu(\(or)21 -b Fm(h)p FD(test)244 704 y Fy(1)264 698 y Fm(i)h Fx(:)7 -b(:)g(:)e Fu(\))1340 b FD(syn)o(tax)75 771 y FB(Identic)n(al)15 -b(to)g(R)325 756 y Fy(4)344 771 y FB(RS.)75 874 y Fu(\(when)21 -b Fm(h)p FD(test)p Fm(i)i(h)p FD(expression)528 880 y -Fy(1)548 874 y Fm(i)f(h)p FD(expression)787 880 y Fy(2)807 -874 y Fm(i)g Fx(:)7 b(:)g(:)e Fu(\))797 b FD(syn)o(tax)75 -948 y(If)14 b(the)i Fm(h)p FD(test)p Fm(i)g FD(expression)g(yields)e(a) -h(true)h(v)n(alue,)d(the)j Fm(h)p FD(expression)p Fm(i)q -FD(s)f(are)h(ev)n(aluated)e(from)f(left)i(to)f(righ)o(t)h(and)75 -998 y(the)f(v)n(alue)g(of)f(the)h(last)g Fm(h)p FD(expression)p -Fm(i)h FD(is)f(returned.)75 1101 y Fu(\(unless)20 b Fm(h)p -FD(test)p Fm(i)k(h)p FD(expression)572 1107 y Fy(1)592 -1101 y Fm(i)d(h)p FD(expression)830 1107 y Fy(2)850 1101 -y Fm(i)h Fx(:)7 b(:)g(:)f Fu(\))753 b FD(syn)o(tax)75 -1174 y(If)14 b(the)h Fm(h)p FD(test)p Fm(i)h FD(expression)f(yields)g -(a)f(false)g(v)n(alue,)f(the)i Fm(h)p FD(expression)p -Fm(i)r FD(s)g(are)f(ev)n(aluated)h(from)d(left)i(to)h(righ)o(t)f(and)75 -1224 y(the)g(v)n(alue)g(of)f(the)h(last)g Fm(h)p FD(expression)p -Fm(i)h FD(is)f(returned.)75 1327 y Fu(\(let)21 b Fm(h)p -FD(bindings)p Fm(i)g(h)p FD(b)q(o)q(dy)p Fm(i)q Fu(\))1183 -b FD(syn)o(tax)75 1377 y Fu(\(let)21 b Fm(h)p FD(v)n(ariable)p -Fm(i)g(h)p FD(bindings)p Fm(i)h(h)p FD(b)q(o)q(dy)p Fm(i)p -Fu(\))987 b FD(syn)o(tax)75 1427 y Fu(\(let*)21 b Fm(h)p -FD(bindings)p Fm(i)g(h)p FD(b)q(o)q(dy)p Fm(i)q Fu(\))1161 -b FD(syn)o(tax)75 1500 y FB(Identic)n(al)15 b(to)g(R)325 -1485 y Fy(4)344 1500 y FB(RS.)75 1604 y Fu(\(fluid-let)20 -b Fm(h)p FD(bindings)p Fm(i)h(h)p FD(b)q(o)q(dy)p Fm(i)q -Fu(\))1052 b FD(syn)o(tax)75 1673 y(The)18 b FB(bindings)k -FD(are)c(ev)n(aluated)g(in)f(the)i(curren)o(t)g(en)o(vironmen)o(t,)e -(in)h(some)f(unsp)q(eci\014ed)i(order,)h(the)e(curren)o(t)75 -1719 y(v)n(alues)e(of)f(the)h(v)n(ariables)f(presen)o(t)j(in)d -FB(bindings)20 b FD(are)c(sa)o(v)o(ed,)g(and)g(the)g(new)h(ev)n -(aluated)e(v)n(alues)h(are)g(assigned)75 1764 y(to)e(the)g -FB(bindings)k FD(v)n(ariables.)f(Once)e(this)f(is)g(done,)g(the)g -(expressions)h(of)f FB(b)n(o)n(dy)k FD(are)c(ev)n(aluated)g(sequen)o -(tially)f(in)75 1810 y(the)j(curren)o(t)h(en)o(vironmen)o(t;)d(the)i(v) -n(alue)f(of)g(the)h(last)f(expression)h(is)f(the)h(result)g(of)f -Fu(fluid-let)p FD(.)20 b(Up)q(on)c(exit,)75 1856 y(the)i(stored)g(v)n -(ariables)e(v)n(alues)h(are)h(restored.)29 b(An)17 b(error)h(is)f -(signalled)f(if)h(an)o(y)f(of)h(the)h FB(bindings)j FD(v)n(ariable)16 -b(is)75 1901 y(un)o(b)q(ound.)153 1979 y Ft(\(let*)i(\(\(a)h('out\))291 -2025 y(\(f)g(\(lambda)e(\(\))h(a\)\)\))193 2070 y(\(list)f(a)310 -2116 y(\(fluid-let)f(\(\(a)j('in\)\))e(\(f\)\))310 2162 -y(a\)\))350 2207 y Fs(=)-6 b Fn(\))19 b Ft(\(out)f(in)h(out\))75 -2330 y FD(When)14 b(the)h(b)q(o)q(dy)g(of)e(a)h Fu(fluid-let)f -FD(is)h(exited)h(b)o(y)f(in)o(v)o(oking)e(a)i(con)o(tin)o(uation,)f -(the)i(new)g(v)n(ariable)e(v)n(alues)h(are)75 2376 y(sa)o(v)o(ed,)j -(and)g(the)g(v)n(ariables)f(are)h(set)g(to)g(their)g(old)f(v)n(alues.) -26 b(Then,)17 b(if)f(the)i(b)q(o)q(dy)e(is)h(reen)o(tered)i(b)o(y)d(in) -o(v)o(oking)75 2422 y(a)j(con)o(tin)o(uation,)g(the)h(old)e(v)n(alues)h -(are)h(sa)o(v)o(ed)f(and)g(new)h(v)n(alues)f(are)h(restored.)35 -b(The)20 b(follo)o(wing)d(example)75 2467 y(illustrates)d(this)g(b)q -(eha)o(viour)153 2545 y Ft(\(let)19 b(\(\(cont)e(#f\))271 -2591 y(\(l)78 b('\(\)\))271 2636 y(\(a)g('out\)\))193 -2728 y(\(set!)17 b(l)j(\(cons)d(a)j(l\)\))193 2773 y(\(fluid-le)o(t)c -(\(\(a)j('in\)\))232 2819 y(\(set!)f(cont)g(\(call/cc)e(\(lambda)h -(\(k\))i(k\)\)\))p eop +9 8 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1288 +b(9)p 37 64 1838 2 v 125 190 a Fv(':key)500 b Fu(=)-7 +b Fp(\))43 b Fv(:key)125 240 y(:key)522 b Fu(=)-7 b Fp(\))43 +b Fv(:key)37 387 y Fn(Note:)36 b(R)201 372 y Fm(4)213 +387 y Fl(RS)16 b Fu(requires)e(to)e(quote)h(constan)o(t)h(lists)f(and)f +(constan)o(t)i(v)o(ectors.)19 b(This)12 b(is)h(not)g(necessary)i(with)d +Fk(STk)p Fu(.)37 512 y Fw(\()p Fo(h)p FF(op)q(erator)p +Fo(i)23 b(h)p FF(op)q(erand)467 519 y FA(1)487 512 y +Fo(i)g Fz(:)8 b(:)g(:)e Fw(\))1132 b FF(syn)o(tax)37 +593 y FD(Identic)n(al)15 b(to)i(R)311 576 y FA(4)331 +593 y FD(RS.)e FF(F)l(urthermore,)f Fo(h)p FF(op)q(erator)p +Fo(i)g FF(can)h(b)q(e)h(a)f(macro)f(\(see)h(section)h(6.15\).)37 +717 y Fw(\(lambda)23 b Fo(h)p FF(formals)p Fo(i)g(h)p +FF(b)q(o)q(dy)p Fo(i)p Fw(\))1153 b FF(syn)o(tax)37 773 +y Fw(\(if)24 b Fo(h)p FF(test)p Fo(i)f(h)p FF(consequen)o(t)p +Fo(i)g(h)p FF(alternate)p Fo(i)p Fw(\))966 b FF(syn)o(tax)37 +830 y Fw(\(if)24 b Fo(h)p FF(test)p Fo(i)f(h)p FF(consequen)o(t)p +Fo(i)o Fw(\))1203 b FF(syn)o(tax)37 886 y Fw(\(set!)24 +b Fo(h)p FF(v)m(ariable)p Fo(i)g(h)p FF(expression)p +Fo(i)q Fw(\))1086 b FF(syn)o(tax)37 967 y FD(Identic)n(al)15 +b(to)i(R)311 951 y FA(4)331 967 y FD(RS.)37 1098 y FI(4.2)56 +b(Deriv)n(ed)18 b(expression)f(t)n(yp)r(es)37 1248 y +Fw(\(cond)24 b Fo(h)p FF(clause)317 1255 y FA(1)337 1248 +y Fo(i)g(h)p FF(clause)515 1255 y FA(2)535 1248 y Fo(i)f +Fz(:)8 b(:)g(:)e Fw(\))1084 b FF(syn)o(tax)37 1305 y +Fw(\(case)24 b Fo(h)p FF(k)o(ey)p Fo(i)f(h)p FF(clause)443 +1312 y FA(1)463 1305 y Fo(i)h(h)p FF(clause)641 1312 +y FA(2)661 1305 y Fo(i)g Fz(:)8 b(:)g(:)d Fw(\))958 b +FF(syn)o(tax)37 1361 y Fw(\(and)24 b Fo(h)p FF(test)249 +1368 y FA(1)268 1361 y Fo(i)f Fz(:)8 b(:)g(:)e Fw(\))1351 +b FF(syn)o(tax)37 1418 y Fw(\(or)24 b Fo(h)p FF(test)225 +1425 y FA(1)244 1418 y Fo(i)f Fz(:)8 b(:)g(:)e Fw(\))1375 +b FF(syn)o(tax)37 1498 y FD(Identic)n(al)15 b(to)i(R)311 +1482 y FA(4)331 1498 y FD(RS.)37 1623 y Fw(\(when)24 +b Fo(h)p FF(test)p Fo(i)e(h)p FF(expression)534 1630 +y FA(1)555 1623 y Fo(i)h(h)p FF(expression)817 1630 y +FA(2)838 1623 y Fo(i)g Fz(:)8 b(:)g(:)e Fw(\))781 b FF(syn)o(tax)37 +1704 y(If)17 b(the)f Fo(h)p FF(test)p Fo(i)f FF(expression)h(yields)i +(a)e(true)f(v)m(alue,)i(the)f Fo(h)p FF(expression)p +Fo(i)q FF(s)g(are)f(ev)m(aluated)i(from)f(left)g(to)f(righ)o(t)37 +1760 y(and)h(the)f(v)m(alue)i(of)d(the)i(last)f Fo(h)p +FF(expression)p Fo(i)g FF(is)h(returned.)37 1884 y Fw(\(unless)23 +b Fo(h)p FF(test)p Fo(i)g(h)p FF(expression)582 1891 +y FA(1)602 1884 y Fo(i)h(h)p FF(expression)865 1891 y +FA(2)885 1884 y Fo(i)g Fz(:)8 b(:)g(:)d Fw(\))734 b FF(syn)o(tax)37 +1965 y(If)16 b(the)g Fo(h)p FF(test)p Fo(i)e FF(expression)j(yields)g +(a)e(false)h(v)m(alue,)g(the)g Fo(h)p FF(expression)p +Fo(i)p FF(s)g(are)f(ev)m(aluated)i(from)d(left)i(to)f(righ)o(t)37 +2022 y(and)h(the)f(v)m(alue)i(of)d(the)i(last)f Fo(h)p +FF(expression)p Fo(i)g FF(is)h(returned.)37 2146 y Fw(\(let)24 +b Fo(h)p FF(bindings)p Fo(i)h(h)p FF(b)q(o)q(dy)p Fo(i)p +Fw(\))1203 b FF(syn)o(tax)37 2202 y Fw(\(let)24 b Fo(h)p +FF(v)m(ariable)p Fo(i)g(h)p FF(bindings)p Fo(i)i(h)p +FF(b)q(o)q(dy)p Fo(i)p Fw(\))988 b FF(syn)o(tax)37 2259 +y Fw(\(let*)24 b Fo(h)p FF(bindings)p Fo(i)h(h)p FF(b)q(o)q(dy)p +Fo(i)p Fw(\))1179 b FF(syn)o(tax)37 2340 y FD(Identic)n(al)15 +b(to)i(R)311 2323 y FA(4)331 2340 y FD(RS.)37 2464 y +Fw(\(fluid-let)23 b Fo(h)p FF(bindings)p Fo(i)i(h)p FF(b)q(o)q(dy)p +Fo(i)p Fw(\))1060 b FF(syn)o(tax)37 2538 y(The)13 b FD(bindings)i +FF(are)d(ev)m(aluated)i(in)f(the)g(curren)o(t)f(en)o(vironmen)o(t,)h +(in)h(some)e(unsp)q(eci\014ed)j(order,)d(the)h(curren)o(t)37 +2588 y(v)m(alues)g(of)e(the)g(v)m(ariables)h(presen)o(t)f(in)h +FD(bindings)i FF(are)d(sa)o(v)o(ed,)g(and)g(the)h(new)f(ev)m(aluated)h +(v)m(alues)h(are)d(assigned)37 2638 y(to)i(the)g FD(bindings)j +FF(v)m(ariables.)20 b(Once)13 b(this)g(is)f(done,)h(the)f(expressions)h +(of)f FD(b)n(o)n(dy)k FF(are)c(ev)m(aluated)h(sequen)o(tially)37 +2688 y(in)i(the)g(curren)o(t)f(en)o(vironmen)o(t;)g(the)g(v)m(alue)h +(of)f(the)g(last)g(expression)h(is)g(the)f(result)h(of)e +Fw(fluid-let)p FF(.)18 b(Up)q(on)37 2738 y(exit,)k(the)e(stored)g(v)m +(ariables)h(v)m(alues)h(are)d(restored.)35 b(An)20 b(error)g(is)g +(signalled)i(if)f(an)o(y)f(of)f(the)i FD(bindings)37 +2787 y FF(v)m(ariable)c(is)f(un)o(b)q(ound.)p eop %%Page: 10 10 -10 9 bop 75 47 a FC(10)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 232 179 a Ft(\(set!)k(l)h(\(cons)f(a)h(l\)\)\))193 -224 y(\(set!)e(l)j(\(cons)d(a)j(l\)\))193 316 y(\(if)e(cont)g(\(cont)g -(#f\))g(l\)\))350 361 y Fs(=)-6 b Fn(\))19 b Ft(\(out)f(in)h(out)f(in)h -(out\))75 579 y Fu(\(letrec)h Fm(h)p FD(bindings)p Fm(i)i(h)p -FD(b)q(o)q(dy)p Fm(i)p Fu(\))1118 b FD(syn)o(tax)75 629 -y Fu(\(begin)21 b Fm(h)p FD(expression)429 635 y Fy(1)449 -629 y Fm(i)g(h)p FD(expression)687 635 y Fy(2)707 629 -y Fm(i)h Fx(:)7 b(:)g(:)f Fu(\))896 b FD(syn)o(tax)75 -679 y Fu(\(do)21 b Fm(h)p FD(inits)p Fm(i)h(h)p FD(test)p -Fm(i)h(h)p FD(b)q(o)q(dy)p Fm(i)p Fu(\))1158 b FD(syn)o(tax)75 -729 y Fu(\(delay)21 b Fm(h)p FD(expression)p Fm(i)q Fu(\))1251 -b FD(syn)o(tax)75 778 y Fu(\(quasiquote)20 b Fm(h)p FD(template)p -Fm(i)o Fu(\))1169 b FD(syn)o(tax)75 828 y Fu(\022)p Fm(h)p -FD(template)p Fm(i)1430 b FD(syn)o(tax)75 902 y FB(Identic)n(al)15 -b(to)g(R)325 887 y Fy(4)344 902 y FB(RS.)75 1000 y Fu(\(dotimes)20 -b FB(\(var)i(c)n(ount\))g Fm(h)p FD(expression)705 1006 -y Fy(1)725 1000 y Fm(i)g(h)p FD(expression)964 1006 y -Fy(2)984 1000 y Fm(i)g Fx(:)7 b(:)g(:)e Fu(\))620 b FD(syn)o(tax)75 -1050 y Fu(\(dotimes)20 b FB(\(var)i(c)n(ount)g(r)n(esult\))f -Fm(h)p FD(expression)825 1056 y Fy(1)845 1050 y Fm(i)h(h)p -FD(expression)1084 1056 y Fy(2)1104 1050 y Fm(i)g Fx(:)7 -b(:)g(:)e Fu(\))500 b FD(syn)o(tax)75 1123 y Fu(Dotimes)8 -b FD(ev)n(aluates)h(the)h FB(c)n(ount)k FD(form,)8 b(whic)o(h)h(m)o -(ust)f(return)j(an)e(in)o(teger.)17 b(It)9 b(then)h(ev)n(aluates)f(the) -h Fm(h)p FD(expression)p Fm(i)r FD(s)75 1173 y(once)18 -b(for)f(eac)o(h)g(in)o(teger)h(from)d(zero)j(\(inclusiv)o(e\))f(to)g -FB(c)n(ount)22 b FD(\(exclusiv)o(e\),)c(in)f(order,)h(with)e(the)i(v)n -(ariable)e FB(var)75 1223 y FD(b)q(ound)j(to)f(the)h(in)o(teger;)i(if)d -(the)i(v)n(alue)e(of)g FB(c)n(ount)23 b FD(is)18 b(zero)i(or)e(negativ) -o(e,)h(then)h(the)f Fm(h)p FD(expression)p Fm(i)r FD(s)f(are)i(not)75 -1272 y(ev)n(aluated.)g(When)14 b(the)h(lo)q(op)f(completes,)g -FB(r)n(esult)k FD(is)c(ev)n(aluated)g(and)h(its)f(v)n(alue)g(is)g -(returned)j(as)d(the)h(v)n(alue)f(of)75 1322 y(the)g -Fu(dotimes)f FD(expression.)19 b(If)14 b FB(r)n(esult)i -FD(is)e(omitted,)e Fu(dotimes)h FD(returns)i Fu(#f)p -FD(.)153 1403 y Ft(\(let)k(\(\(l)f('\(\)\)\))193 1449 -y(\(dotimes)e(\(i)j(4)g(l\))252 1494 y(\(set!)e(l)i(\(cons)f(i)h -(l\)\)\)\))350 1540 y Fs(=)-6 b Fn(\))19 b Ft(\(3)g(2)g(1)g(0\))75 -1719 y Fu(\(while)i Fm(h)p FD(test)p Fm(i)i(h)p FD(expression)550 -1725 y Fy(1)570 1719 y Fm(i)f(h)p FD(expression)809 1725 -y Fy(2)829 1719 y Fm(i)g Fx(:)7 b(:)g(:)e Fu(\))775 b -FD(syn)o(tax)75 1793 y Fu(While)11 b FD(ev)n(aluates)g(the)i -Fm(h)p FD(expression)p Fm(i)q FD(s)f(un)o(til)f Fm(h)p -FD(test)p Fm(i)i FD(returns)g(a)f(false)f(v)n(alue.)17 -b(The)12 b(v)n(alue)f(of)g(a)g Fu(while)g FD(construct)75 -1842 y(is)j(unsp)q(eci\014ed.)75 1941 y Fu(\(until)21 -b Fm(h)p FD(test)p Fm(i)i(h)p FD(expression)550 1947 -y Fy(1)570 1941 y Fm(i)f(h)p FD(expression)809 1947 y -Fy(2)829 1941 y Fm(i)g Fx(:)7 b(:)g(:)e Fu(\))775 b FD(syn)o(tax)75 -2014 y Fu(Until)19 b FD(ev)n(aluates)h(the)g Fm(h)p FD(expression)p -Fm(i)r FD(s)g(while)f Fm(h)p FD(test)p Fm(i)i FD(returns)h(a)d(false)h -(v)n(alue.)35 b(The)21 b(v)n(alue)e(of)g(an)h Fu(unless)75 -2064 y FD(construct)c(is)d(unsp)q(eci\014ed.)75 2195 -y Fw(5)67 b(Program)22 b(structure)75 2285 y FB(Identic)n(al)15 -b(to)g(R)325 2270 y Fy(4)344 2285 y FB(RS.)75 2422 y -Fw(6)67 b(Standard)24 b(pro)r(cedures)75 2521 y FG(6.1)56 -b(Bo)r(oleans)75 2597 y FD(In)14 b Fz(STk)g FD(the)h(b)q(o)q(olean)e(v) -n(alue)g Fu(#f)h FD(is)g(di\013eren)o(t)g(from)e(the)j(empt)o(y)e -(list,)g(as)h(required)h(b)o(y)e FB(R)1500 2582 y Fy(4)1512 -2597 y Fx(RS)r FD(.)75 2701 y Fu(\(not)21 b FB(obj)6 -b Fu(\))1394 b FD(pro)q(cedure)75 2751 y Fu(\(boolean?)20 -b FB(obj)6 b Fu(\))1285 b FD(pro)q(cedure)75 2824 y FB(Identic)n(al)15 -b(to)g(R)325 2809 y Fy(4)344 2824 y FB(RS.)p eop +10 9 bop 37 45 a FE(10)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 125 190 a Fv(\(let*)j(\(\(a)i('out\))277 +240 y(\(f)g(\(lambda)e(\(\))h(a\)\)\))168 290 y(\(list)g(a)299 +340 y(\(fluid-let)f(\(\(a)h('in\)\))g(\(f\)\))299 390 +y(a\)\))343 439 y Fu(=)-7 b Fp(\))21 b Fv(\(out)g(in)h(out\))37 +580 y FF(When)15 b(the)g(b)q(o)q(dy)g(of)g(a)f Fw(fluid-let)f +FF(is)i(exited)h(b)o(y)e(in)o(v)o(oking)h(a)g(con)o(tin)o(uation,)f +(the)h(new)g(v)m(ariable)h(v)m(alues)37 630 y(are)j(sa)o(v)o(ed,)g(and) +g(the)g(v)m(ariables)i(are)d(set)h(to)f(their)i(old)f(v)m(alues.)32 +b(Then,)20 b(if)g(the)f(b)q(o)q(dy)g(is)h(reen)o(tered)f(b)o(y)37 +680 y(in)o(v)o(oking)d(a)f(con)o(tin)o(uation,)g(the)g(old)h(v)m(alues) +g(are)f(sa)o(v)o(ed)g(and)g(new)g(v)m(alues)i(are)d(restored.)20 +b(The)15 b(follo)o(wing)37 729 y(example)i(illustrates)f(this)f(b)q +(eha)o(viour)125 821 y Fv(\(let)21 b(\(\(cont)f(#f\))255 +871 y(\(l)87 b('\(\)\))255 921 y(\(a)g('out\)\))168 1020 +y(\(set!)21 b(l)h(\(cons)e(a)i(l\)\))168 1070 y(\(fluid-let)e(\(\(a)h +('in\)\))212 1120 y(\(set!)g(cont)g(\(call/cc)f(\(lambda)g(\(k\))h +(k\)\)\))212 1170 y(\(set!)g(l)g(\(cons)g(a)h(l\)\)\))168 +1219 y(\(set!)f(l)h(\(cons)e(a)i(l\)\))168 1319 y(\(if)f(cont)g(\(cont) +g(#f\))g(l\)\))343 1369 y Fu(=)-7 b Fp(\))21 b Fv(\(out)g(in)h(out)f +(in)g(out\))37 1633 y Fw(\(letrec)i Fo(h)p FF(bindings)p +Fo(i)j(h)p FF(b)q(o)q(dy)p Fo(i)p Fw(\))1131 b FF(syn)o(tax)37 +1689 y Fw(\(begin)24 b Fo(h)p FF(expression)426 1696 +y FA(1)446 1689 y Fo(i)f(h)p FF(expression)708 1696 y +FA(2)729 1689 y Fo(i)g Fz(:)8 b(:)g(:)e Fw(\))890 b FF(syn)o(tax)37 +1746 y Fw(\(do)24 b Fo(h)p FF(inits)p Fo(i)g(h)p FF(test)p +Fo(i)f(h)p FF(b)q(o)q(dy)p Fo(i)p Fw(\))1175 b FF(syn)o(tax)37 +1802 y Fw(\(delay)24 b Fo(h)p FF(expression)p Fo(i)p +Fw(\))1277 b FF(syn)o(tax)37 1858 y Fw(\(quasiquote)23 +b Fo(h)p FF(template)p Fo(i)o Fw(\))1188 b FF(syn)o(tax)37 +1915 y Fw(\022)p Fo(h)p FF(template)p Fo(i)1474 b FF(syn)o(tax)37 +1996 y FD(Identic)n(al)15 b(to)i(R)311 1979 y FA(4)331 +1996 y FD(RS.)37 2120 y Fw(\(dotimes)23 b FD(\(var)h(c)n(ount\))f +Fo(h)p FF(expression)728 2127 y FA(1)749 2120 y Fo(i)g(h)p +FF(expression)1011 2127 y FA(2)1032 2120 y Fo(i)g Fz(:)8 +b(:)g(:)e Fw(\))587 b FF(syn)o(tax)37 2176 y Fw(\(dotimes)23 +b FD(\(var)h(c)n(ount)g(r)n(esult\))f Fo(h)p FF(expression)860 +2183 y FA(1)880 2176 y Fo(i)h(h)p FF(expression)1143 +2183 y FA(2)1163 2176 y Fo(i)f Fz(:)8 b(:)g(:)e Fw(\))456 +b FF(syn)o(tax)37 2257 y Fw(Dotimes)22 b FF(ev)m(aluates)h(the)g +FD(c)n(ount)j FF(form,)d(whic)o(h)g(m)o(ust)f(return)h(an)f(in)o +(teger.)42 b(It)22 b(then)h(ev)m(aluates)g(the)37 2314 +y Fo(h)p FF(expression)p Fo(i)q FF(s)16 b(once)i(for)e(eac)o(h)h(in)o +(teger)g(from)f(zero)h(\(inclusiv)o(e\))h(to)e FD(c)n(ount)21 +b FF(\(exclusiv)o(e\),)d(in)g(order,)f(with)37 2370 y(the)k(v)m +(ariable)h FD(var)k FF(b)q(ound)c(to)e(the)g(in)o(teger;)k(if)d(the)f +(v)m(alue)i(of)f FD(c)n(ount)j FF(is)d(zero)g(or)f(negativ)o(e,)i(then) +f(the)37 2427 y Fo(h)p FF(expression)p Fo(i)q FF(s)16 +b(are)h(not)f(ev)m(aluated.)26 b(When)17 b(the)g(lo)q(op)h(completes,)f +FD(r)n(esult)k FF(is)c(ev)m(aluated)h(and)f(its)g(v)m(alue)37 +2483 y(is)f(returned)g(as)f(the)g(v)m(alue)h(of)f(the)g +Fw(dotimes)g FF(expression.)20 b(If)c FD(r)n(esult)j +FF(is)c(omitted,)g Fw(dotimes)f FF(returns)h Fw(#f)p +FF(.)125 2588 y Fv(\(let)21 b(\(\(l)g('\(\)\)\))168 2638 +y(\(dotimes)f(\(i)i(4)f(l\))234 2688 y(\(set!)f(l)i(\(cons)f(i)g +(l\)\)\)\))343 2738 y Fu(=)-7 b Fp(\))21 b Fv(\(3)h(2)f(1)h(0\))p +eop %%Page: 11 11 -11 10 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(11)p 75 64 1763 2 v 75 179 a FG(6.2)56 b(Equiv)m(alence)16 -b(predicates)75 316 y Fu(\(eqv?)21 b FB(obj)259 322 y -Fy(1)299 316 y FB(obj)352 322 y Fy(2)371 316 y Fu(\))1266 -b FD(pro)q(cedure)75 387 y Fz(STk)15 b FD(extends)i(the)e -Fu(eqv?)f FD(predicate)i(de\014ned)g(in)e(the)i FB(R)978 -372 y Fy(4)990 387 y Fx(RS)h FD(to)e(tak)o(e)g(k)o(eyw)o(ords)g(in)o -(to)g(accoun)o(t:)20 b(if)14 b FB(obj)1737 393 y Fy(1)1771 -387 y FD(and)75 432 y FB(obj)128 438 y Fy(2)161 432 y -FD(are)g(b)q(oth)g(k)o(eyw)o(ords,)g(the)g Fu(eqv?)f -FD(predicate)i(will)d(yield)i Fu(#t)f FD(if)g(and)h(only)f(if)153 -516 y Ft(\(string=?)k(\(keyword-)o(>s)o(tri)o(ng)f(obj1\))350 -562 y(\(keyword-)o(>s)o(tri)o(ng)g(obj2\)\))703 608 y -Fs(=)-6 b Fn(\))39 b Ft(#t)75 758 y Fu(\(eq?)21 b FB(obj)237 -764 y Fy(1)277 758 y FB(obj)330 764 y Fy(2)349 758 y -Fu(\))1288 b FD(pro)q(cedure)75 833 y Fz(STk)12 b FD(extends)i(the)f -Fu(eq?)e FD(predicate)i(de\014ned)g(in)f FB(R)864 818 -y Fy(4)876 833 y Fx(RS)j FD(to)d(tak)o(e)g(k)o(eyw)o(ords)g(in)o(to)g -(accoun)o(t.)17 b(On)c(k)o(eyw)o(ords,)f Fu(eq?)75 883 -y FD(b)q(eha)o(v)o(es)j(lik)o(e)e Fu(eqv?)p FD(.)153 -976 y Ft(\(eq?)19 b(:key)f(:key\))253 b Fs(=)-6 b Fn(\))39 -b Ft(#t)75 1182 y Fu(\(equal?)20 b FB(obj)302 1188 y -Fy(1)343 1182 y FB(obj)396 1188 y Fy(2)414 1182 y Fu(\))1223 -b FD(pro)q(cedure)75 1257 y FB(Identic)n(al)15 b(to)g(R)325 -1242 y Fy(4)344 1257 y FB(RS.)75 1386 y FG(6.3)56 b(P)n(airs)19 -b(and)g(lists)75 1523 y Fu(\(pair?)i FB(obj)6 b Fu(\))1350 -b FD(pro)q(cedure)75 1573 y Fu(\(cons)21 b FB(obj)259 -1579 y Fy(1)299 1573 y FB(obj)352 1579 y Fy(2)371 1573 -y Fu(\))1266 b FD(pro)q(cedure)75 1623 y Fu(\(car)21 -b FB(p)n(air)t Fu(\))1378 b FD(pro)q(cedure)75 1672 y -Fu(\(cdr)21 b FB(p)n(air)t Fu(\))1378 b FD(pro)q(cedure)75 -1722 y Fu(\(set-car!)20 b FB(p)n(air)h(obj)6 b Fu(\))1193 -b FD(pro)q(cedure)75 1772 y Fu(\(set-cdr!)20 b FB(p)n(air)h(obj)6 -b Fu(\))1193 b FD(pro)q(cedure)75 1822 y Fu(\(caar)21 -b FB(p)n(air)t Fu(\))1356 b FD(pro)q(cedure)75 1872 y -Fu(\(cadr)21 b FB(p)n(air)t Fu(\))1356 b FD(pro)q(cedure)178 -1914 y Fu(.)178 1931 y(.)178 1947 y(.)1742 1914 y FD(.)1742 -1931 y(.)1742 1947 y(.)75 1997 y Fu(\(cdddar)20 b FB(p)n(air)t -Fu(\))1313 b FD(pro)q(cedure)75 2047 y Fu(\(cddddr)20 -b FB(p)n(air)t Fu(\))1313 b FD(pro)q(cedure)75 2097 y -Fu(\(null?)21 b FB(obj)6 b Fu(\))1350 b FD(pro)q(cedure)75 -2146 y Fu(\(list?)21 b FB(obj)6 b Fu(\))1350 b FD(pro)q(cedure)75 -2196 y Fu(\(list)21 b FB(obj)28 b Fx(:)7 b(:)g(:)e Fu(\))1295 -b FD(pro)q(cedure)75 2246 y Fu(\(length)20 b FB(list)t -Fu(\))1329 b FD(pro)q(cedure)75 2296 y Fu(\(append)20 -b FB(list)h Fx(:)7 b(:)g(:)f Fu(\))1256 b FD(pro)q(cedure)75 -2346 y Fu(\(reverse)20 b FB(list)t Fu(\))1307 b FD(pro)q(cedure)75 -2395 y Fu(\(list-tail)20 b FB(list)h Fx(k)q Fu(\))1223 -b FD(pro)q(cedure)75 2445 y Fu(\(list-ref)20 b FB(list)h -Fx(k)q Fu(\))1245 b FD(pro)q(cedure)75 2495 y Fu(\(memq)21 -b FB(obj)h(list)t Fu(\))1297 b FD(pro)q(cedure)75 2545 -y Fu(\(memv)21 b FB(obj)h(list)t Fu(\))1297 b FD(pro)q(cedure)75 -2595 y Fu(\(member)20 b FB(obj)i(list)t Fu(\))1254 b -FD(pro)q(cedure)75 2645 y Fu(\(assq)21 b FB(obj)h(alist)t -Fu(\))1276 b FD(pro)q(cedure)75 2694 y Fu(\(assv)21 b -FB(obj)h(alist)t Fu(\))1276 b FD(pro)q(cedure)75 2744 -y Fu(\(assoc)21 b FB(obj)g(alist)t Fu(\))1255 b FD(pro)q(cedure)75 -2819 y FB(Identic)n(al)15 b(to)g(R)325 2804 y Fy(4)344 -2819 y FB(RS.)p eop +11 10 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(11)p 37 64 1838 2 v 37 190 a Fw(\(while)24 b Fo(h)p +FF(test)p Fo(i)e(h)p FF(expression)558 197 y FA(1)579 +190 y Fo(i)h(h)p FF(expression)841 197 y FA(2)861 190 +y Fo(i)h Fz(:)8 b(:)g(:)e Fw(\))757 b FF(syn)o(tax)37 +272 y Fw(While)20 b FF(ev)m(aluates)g(the)g Fo(h)p FF(expression)p +Fo(i)p FF(s)g(un)o(til)h Fo(h)p FF(test)p Fo(i)d FF(returns)i(a)f +(false)h(v)m(alue.)35 b(The)20 b(v)m(alue)h(of)e(a)h +Fw(while)37 328 y FF(construct)15 b(is)h(unsp)q(eci\014ed.)37 +455 y Fw(\(until)24 b Fo(h)p FF(test)p Fo(i)e(h)p FF(expression)558 +462 y FA(1)579 455 y Fo(i)h(h)p FF(expression)841 462 +y FA(2)861 455 y Fo(i)h Fz(:)8 b(:)g(:)e Fw(\))757 b +FF(syn)o(tax)37 536 y Fw(Until)16 b FF(ev)m(aluates)g(the)h +Fo(h)p FF(expression)p Fo(i)p FF(s)f(while)h Fo(h)p FF(test)p +Fo(i)e FF(returns)h(a)f(false)i(v)m(alue.)23 b(The)16 +b(v)m(alue)h(of)f(an)g Fw(unless)37 593 y FF(construct)f(is)h(unsp)q +(eci\014ed.)37 748 y Fy(5)67 b(Program)23 b(structure)37 +852 y FD(Identic)n(al)15 b(to)i(R)311 835 y FA(4)331 +852 y FD(RS.)37 1002 y Fy(6)67 b(Standard)24 b(pro)r(cedures)37 +1107 y FI(6.1)56 b(Bo)r(oleans)37 1196 y FF(In)16 b FB(STk)f +FF(the)g(b)q(o)q(olean)h(v)m(alue)h Fw(#f)e FF(is)g(di\013eren)o(t)h +(from)e(the)i(empt)o(y)e(list,)i(as)f(required)h(b)o(y)f +FD(R)1598 1179 y FA(4)1611 1196 y Fz(RS)s FF(.)37 1317 +y Fw(\(not)24 b FD(obj)7 b Fw(\))1433 b FF(pro)q(cedure)37 +1373 y Fw(\(boolean?)23 b FD(obj)7 b Fw(\))1314 b FF(pro)q(cedure)37 +1454 y FD(Identic)n(al)15 b(to)i(R)311 1438 y FA(4)331 +1454 y FD(RS.)37 1588 y FI(6.2)56 b(Equiv)m(alence)16 +b(predicates)37 1740 y Fw(\(eqv?)24 b FD(obj)239 1747 +y FA(1)282 1740 y FD(obj)340 1747 y FA(2)360 1740 y Fw(\))1295 +b FF(pro)q(cedure)37 1815 y FB(STk)16 b FF(extends)h(the)f +Fw(eqv?)g FF(predicate)h(de\014ned)g(in)g(the)g FD(R)1026 +1798 y FA(4)1038 1815 y Fz(RS)h FF(to)e(tak)o(e)f(k)o(eyw)o(ords)h(in)o +(to)g(accoun)o(t:)22 b(if)16 b FD(obj)1855 1822 y FA(1)37 +1865 y FF(and)g FD(obj)184 1872 y FA(2)219 1865 y FF(are)f(b)q(oth)g(k) +o(eyw)o(ords,)f(the)h Fw(eqv?)g FF(predicate)h(will)h(yield)g +Fw(#t)e FF(if)g(and)h(only)f(if)125 1958 y Fv(\(string=?)20 +b(\(keyword->strin)o(g)f(obj1\))343 2007 y(\(keyword->strin)o(g)g +(obj2\)\))735 2057 y Fu(=)-7 b Fp(\))43 b Fv(#t)37 2225 +y Fw(\(eq?)24 b FD(obj)215 2232 y FA(1)258 2225 y FD(obj)316 +2232 y FA(2)336 2225 y Fw(\))1319 b FF(pro)q(cedure)37 +2306 y FB(STk)13 b FF(extends)g(the)g Fw(eq?)f FF(predicate)h +(de\014ned)i(in)e FD(R)898 2290 y FA(4)910 2306 y Fz(RS)i +FF(to)e(tak)o(e)f(k)o(eyw)o(ords)f(in)o(to)i(accoun)o(t.)19 +b(On)13 b(k)o(eyw)o(ords,)37 2363 y Fw(eq?)i FF(b)q(eha)o(v)o(es)h(lik) +o(e)g Fw(eqv?)p FF(.)125 2469 y Fv(\(eq?)21 b(:key)g(:key\))282 +b Fu(=)-7 b Fp(\))43 b Fv(#t)37 2700 y Fw(\(equal?)23 +b FD(obj)286 2707 y FA(1)330 2700 y FD(obj)388 2707 y +FA(2)408 2700 y Fw(\))1247 b FF(pro)q(cedure)37 2782 +y FD(Identic)n(al)15 b(to)i(R)311 2765 y FA(4)331 2782 +y FD(RS.)p eop %%Page: 12 12 -12 11 bop 75 47 a FC(12)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(\(remq)21 b FB(obj)h(list)t -Fu(\))1297 b FD(pro)q(cedure)75 229 y Fu(\(remv)21 b -FB(obj)h(list)t Fu(\))1297 b FD(pro)q(cedure)75 278 y -Fu(\(remove)20 b FB(obj)i(list)t Fu(\))1254 b FD(pro)q(cedure)75 -355 y(Eac)o(h)10 b(function)g(return)i(a)d(cop)o(y)i(of)e -FB(list)k FD(where)e(all)e(the)i(o)q(ccurences)i(of)d -FB(obj)16 b FD(ha)o(v)o(e)10 b(b)q(een)h(deleted.)18 -b(The)10 b(predicate)75 404 y(used)15 b(to)f(test)g(the)h(presence)h -(of)e FB(obj)20 b FD(in)13 b FB(list)k FD(is)d(resp)q(ectiv)o(ely)h -Fu(eq)p FD(,)e Fu(eqv)g FD(and)h Fu(equal)p FD(.)75 453 -y Fl(Note:)32 b Fs(It)13 b(is)h(not)f(an)g(error)g(if)h -Fl(obj)j Fs(do)q(es)c(not)h(app)q(ear)g(in)f Fl(list)s -Fs(.)153 543 y Ft(\(remq)18 b(1)h('\(1)g(2)g(3\)\))215 -b Fs(=)-6 b Fn(\))19 b Ft(\(2)g(3\))153 589 y(\(remq)f("foo")g -('\("foo")f("bar"\)\))g Fs(=)-6 b Fn(\))19 b Ft(\("foo")e("bar"\))153 -634 y(\(remove)g("foo")h('\("foo")f("bar"\)\))703 680 -y Fs(=)-6 b Fn(\))19 b Ft(\("bar"\))75 891 y Fu(\(list*)i -FB(obj)6 b Fu(\))1350 b FD(pro)q(cedure)75 963 y Fu(list*)18 -b FD(is)g(lik)o(e)g Fu(list)g FD(except)j(that)d(the)i(last)e(argumen)o -(t)g(to)h Fu(list*)f FD(is)g(used)i(as)f(the)g FB(c)n(dr)g -FD(of)f(the)h(last)g(pair)75 1009 y(constructed.)153 -1099 y Ft(\(list*)f(1)h(2)g(3\))294 b Fs(=)-6 b Fn(\))19 -b Ft(\(1)g(2)g(.)g(3\))153 1144 y(\(list*)f(1)h(2)g(3)g('\(4)g(5\)\)) -156 b Fs(=)-6 b Fn(\))19 b Ft(\(1)g(2)g(3)g(4)h(5\))75 -1355 y Fu(\(copy-tree)g FB(obj)6 b Fu(\))1263 b FD(pro)q(cedure)75 -1431 y Fu(Copy-tree)10 b FD(recursiv)o(ely)j(copies)f(trees)i(of)d -(pairs.)18 b(If)11 b Fu(obj)g FD(is)h(not)g(a)g(pair,)f(it)h(is)f -(returned;)j(otherwise)f(the)g(result)75 1481 y(is)k(a)g(new)g(pair)g -(whose)h FB(c)n(ar)e FD(and)h FB(c)n(dr)g FD(are)h(obtained)e(b)o(y)h -(calling)f Fu(copy-tree)f FD(on)i(the)h FB(c)n(ar)e FD(and)h -FB(c)n(dr)g FD(of)g Fu(obj)p FD(,)75 1531 y(resp)q(ectiv)o(ely)m(.)75 -1674 y FG(6.4)56 b(Sym)n(b)r(ols)75 1756 y FD(The)15 -b Fz(STk)g FD(reader)h(can)g(cop)q(e)f(with)g(sym)o(b)q(ols)e(whose)i -(names)f(con)o(tain)h(sp)q(ecial)g(c)o(haracters)i(or)d(letters)i(in)f -(the)75 1806 y(non)k(standard)h(case.)36 b(When)20 b(a)f(sym)o(b)q(ol)f -(is)i(read,)g(the)h(parts)f(enclosed)g(in)f(bars)h(\(\\)p -Fu(|)p FD("\))g(will)e(b)q(e)i(en)o(tered)75 1856 y(v)o(erbatim)12 -b(in)o(to)h(the)h(sym)o(b)q(ol's)d(name.)17 b(The)d(\\)p -Fu(|)p FD(")f(c)o(haracters)i(are)f(not)f(part)h(of)f(the)h(sym)o(b)q -(ol;)d(they)k(only)d(serv)o(e)75 1906 y(to)g(delimit)d(the)j(sequence)i -(of)d(c)o(haracters)j(that)d(m)o(ust)g(b)q(e)h(en)o(tered)i(\\as)d -(is".)17 b(In)12 b(order)g(to)g(main)o(tain)d(read-write)75 -1956 y(in)o(v)n(ariance,)j(sym)o(b)q(ols)f(con)o(taining)h(suc)o(h)h -(sequences)j(of)c(sp)q(ecial)h(c)o(haracters)h(will)e(b)q(e)h(written)g -(b)q(et)o(w)o(een)h(a)f(pair)75 2005 y(of)g(\\)p Fu(|)p -FD(")153 2107 y Ft('|x|)470 b Fs(=)-6 b Fn(\))19 b Ft(x)153 -2152 y(\(string->sy)o(mb)o(ol)d("X"\))156 b Fs(=)-6 b -Fn(\))19 b Ft(|X|)153 2198 y(\(symbol->st)o(ri)o(ng)d('|X|\))136 -b Fs(=)-6 b Fn(\))19 b Ft("X")153 2244 y('|a)39 b(b|)411 -b Fs(=)-6 b Fn(\))19 b Ft(|a)39 b(b|)153 2289 y('a|B|c)430 -b Fs(=)-6 b Fn(\))19 b Ft(|aBc|)153 2335 y(\(write)f('|FoO|\))272 -b Fs(=)-6 b Fn(\))19 b Ft(writes)e(the)i(string)e("|FoO|")153 -2381 y(\(display)g('|FoO|\))233 b Fs(=)-6 b Fn(\))19 -b Ft(writes)e(the)i(string)e("FoO")75 2529 y Fl(Note:)53 -b Fs(This)19 b(notation)h(has)e(b)q(een)h(in)o(tro)q(duced)h(b)q -(ecause)g Fl(R)1014 2513 y Fr(4)1025 2529 y Fk(RS)g Fs(states)f(that)f -(case)h(m)o(ust)f(not)g(b)q(e)h(signi\014can)o(t)i(in)75 -2579 y(sym)o(b)q(ols)14 b(whereas)f(the)g(Tk)g(to)q(olkit)h(is)f(case)g -(signi\014can)o(t)j(\(or)c(more)h(precisely)i(thinks)f(it)f(runs)g(o)o -(v)o(er)g(Tcl)g(whic)o(h)h(is)f(case)75 2629 y(signi\014can)o(t\).)19 -b(Ho)o(w)o(ev)o(er,)13 b(sym)o(b)q(ols)h(con)o(taining)i(the)d(c)o -(haracter)h(\\)p Ft(|)p Fs(")f(itself)h(still)h(can't)e(b)q(e)g(read)g -(in.)75 2743 y Fu(\(symbol?)20 b FB(obj)6 b Fu(\))1307 -b FD(pro)q(cedure)75 2819 y(Returns)15 b Fu(#t)e FD(if)g -FB(obj)20 b FD(is)14 b(a)f(sym)o(b)q(ol,)f(otherwise)j(returns)g -Fu(#f)p FD(.)p eop +12 11 bop 37 45 a FE(12)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a FI(6.3)56 b(P)n(airs)19 b(and)h(lists)37 +343 y Fw(\(pair?)k FD(obj)7 b Fw(\))1385 b FF(pro)q(cedure)37 +399 y Fw(\(cons)24 b FD(obj)239 406 y FA(1)282 399 y +FD(obj)340 406 y FA(2)360 399 y Fw(\))1295 b FF(pro)q(cedure)37 +455 y Fw(\(car)24 b FD(p)n(air)5 b Fw(\))1416 b FF(pro)q(cedure)37 +512 y Fw(\(cdr)24 b FD(p)n(air)5 b Fw(\))1416 b FF(pro)q(cedure)37 +568 y Fw(\(set-car!)23 b FD(p)n(air)h(obj)7 b Fw(\))1213 +b FF(pro)q(cedure)37 625 y Fw(\(set-cdr!)23 b FD(p)n(air)h(obj)7 +b Fw(\))1213 b FF(pro)q(cedure)37 681 y Fw(\(caar)24 +b FD(p)n(air)5 b Fw(\))1392 b FF(pro)q(cedure)37 738 +y Fw(\(cadr)24 b FD(p)n(air)5 b Fw(\))1392 b FF(pro)q(cedure)150 +781 y Fw(.)150 798 y(.)150 815 y(.)1771 781 y FF(.)1771 +798 y(.)1771 815 y(.)37 871 y Fw(\(cdddar)23 b FD(p)n(air)5 +b Fw(\))1345 b FF(pro)q(cedure)37 927 y Fw(\(cddddr)23 +b FD(p)n(air)5 b Fw(\))1345 b FF(pro)q(cedure)37 984 +y Fw(\(null?)24 b FD(obj)7 b Fw(\))1385 b FF(pro)q(cedure)37 +1040 y Fw(\(list?)24 b FD(obj)7 b Fw(\))1385 b FF(pro)q(cedure)37 +1097 y Fw(\(list)24 b FD(obj)30 b Fz(:)8 b(:)g(:)e Fw(\))1325 +b FF(pro)q(cedure)37 1153 y Fw(\(length)23 b FD(list)t +Fw(\))1363 b FF(pro)q(cedure)37 1210 y Fw(\(append)23 +b FD(list)h Fz(:)8 b(:)g(:)d Fw(\))1283 b FF(pro)q(cedure)37 +1291 y FD(Identic)n(al)15 b(to)i(R)311 1275 y FA(4)331 +1291 y FD(RS.)37 1419 y Fw(\(append!)23 b FD(list)g(.)7 +b(.)g(.)g Fw(\))1257 b FF(pro)q(cedure)37 1494 y(Returns)15 +b(a)f(list)i(consisting)f(of)f(the)g(elemen)o(ts)h(of)f(the)h(\014rst)f +FD(list)k FF(follo)o(w)o(ed)c(b)o(y)g(the)h(elemen)o(ts)g(of)f(the)g +(other)37 1543 y(lists,)i(as)g(with)f Fw(append)p FF(.)20 +b(The)c(di\013erenece)h(with)f Fw(append)e FF(is)i(that)f(the)h +(argumen)o(ts)e(are)h FD(change)n(d)h FF(rather)37 1593 +y(than)g FD(c)n(opie)n(d)p FF(.)168 1687 y Fv(\(append!)k('\(1)i(2\))f +('\(3)g(4\))g('\(5)h(6\)\))343 1737 y Fu(=)-7 b Fp(\))21 +b Fv('\(1)g(2)h(3)g(4)f(5)h(6\))168 1786 y(\(let)f(\(\(l1)g('\(1)g +(2\)\))299 1836 y(\(l2)g('\(3)g(4\)\))299 1886 y(\(l3)g('\(5)g(6\)\)\)) +212 1936 y(\(append!)f(l1)h(l2)h(l3\))212 1986 y(\(list)f(l1)g(l2)g +(l3\)\))343 2036 y Fu(=)-7 b Fp(\))21 b Fv(\(\(1)g(2)h(3)g(4)f(5)h(6\)) +f(\(3)h(4)f(5)h(6\))f(\(5)g(6\)\))37 2254 y Fw(\(reverse)i +FD(list)t Fw(\))1339 b FF(pro)q(cedure)37 2311 y Fw(\(list-tail)23 +b FD(list)g Fz(k)q Fw(\))1247 b FF(pro)q(cedure)37 2367 +y Fw(\(list-ref)23 b FD(list)g Fz(k)q Fw(\))1271 b FF(pro)q(cedure)37 +2424 y Fw(\(memq)24 b FD(obj)g(list)t Fw(\))1328 b FF(pro)q(cedure)37 +2480 y Fw(\(memv)24 b FD(obj)g(list)t Fw(\))1328 b FF(pro)q(cedure)37 +2537 y Fw(\(member)23 b FD(obj)h(list)t Fw(\))1281 b +FF(pro)q(cedure)37 2593 y Fw(\(assq)24 b FD(obj)g(alist)t +Fw(\))1305 b FF(pro)q(cedure)37 2650 y Fw(\(assv)24 b +FD(obj)g(alist)t Fw(\))1305 b FF(pro)q(cedure)37 2706 +y Fw(\(assoc)24 b FD(obj)f(alist)t Fw(\))1282 b FF(pro)q(cedure)37 +2787 y FD(Identic)n(al)15 b(to)i(R)311 2771 y FA(4)331 +2787 y FD(RS.)p eop %%Page: 13 13 -13 12 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(13)p 75 64 1763 2 v 153 179 a Ft(\(symbol?)17 b('foo\))273 -b Fs(=)-6 b Fn(\))39 b Ft(#t)153 224 y(\(symbol?)17 b(\(car)h('\(a)h -(b\)\)\))116 b Fs(=)-6 b Fn(\))39 b Ft(#t)153 270 y(\(symbol?)17 -b("bar"\))253 b Fs(=)-6 b Fn(\))39 b Ft(#f)153 316 y(\(symbol?)17 -b('nil\))273 b Fs(=)-6 b Fn(\))39 b Ft(#t)153 361 y(\(symbol?)17 -b('\(\)\))293 b Fs(=)-6 b Fn(\))39 b Ft(#f)153 407 y(\(symbol?)17 -b(#f\))313 b Fs(=)-6 b Fn(\))39 b Ft(#f)153 453 y(\(symbol?)17 -b(:key\))273 b Fs(=)-6 b Fn(\))39 b Ft(#f)75 632 y Fu(\(symbol->string) -19 b FB(symb)n(ol)t Fu(\))1089 b FD(pro)q(cedure)75 682 -y Fu(\(string->symbol)19 b FB(string)t Fu(\))1105 b FD(pro)q(cedure)75 -755 y FB(Identic)n(al)15 b(to)g(R)325 740 y Fy(4)344 -755 y FB(RS.)75 853 y Fu(\(gensym)o(\))1409 b FD(pro)q(cedure)75 -903 y Fu(\(gensym)20 b FB(pr)n(e\014x)5 b Fu(\))1285 -b FD(pro)q(cedure)75 972 y Fu(Gensym)11 b FD(creates)k(a)d(new)h(sym)o -(b)q(ol.)j(The)d(prin)o(t)f(name)g(of)g(the)h(generated)h(sym)o(b)q(ol) -c(consists)k(of)e(a)g(pre\014x)h(\(whic)o(h)75 1018 y(defaults)g(to)g -Fu("G")p FD(\))g(follo)o(w)o(ed)e(b)o(y)i(the)h(decimal)d(represen)o -(tation)k(of)d(a)h(n)o(um)o(b)q(er.)k(If)c FB(pr)n(e\014x)18 -b FD(is)13 b(sp)q(eci\014ed,)i(it)d(m)o(ust)75 1064 y(b)q(e)j(a)e -(string.)153 1138 y Ft(\(gensym\))350 1183 y Fs(=)-6 -b Fn(\))19 b Ft(|G100|)153 1229 y(\(gensym)e("foo-"\))350 -1275 y Fs(=)-6 b Fn(\))19 b Ft(foo-101)75 1458 y FG(6.5)56 -b(Num)n(b)r(ers)75 1535 y FD(The)18 b(only)g(n)o(um)o(b)q(ers)f -(recognized)i(b)o(y)f Fz(STk)g FD(are)h(in)o(tegers)f(\(with)g -(arbitrary)g(precision\))g(and)g(reals)g(\(imple-)75 -1584 y(men)o(ted)13 b(as)h(C)g Fu(double)21 b(float)p -FD(s\).)75 1688 y Fu(\(number?)f FB(obj)6 b Fu(\))1307 -b FD(pro)q(cedure)75 1762 y(Returns)15 b Fu(#t)e FD(if)g -FB(obj)20 b FD(is)14 b(a)f(n)o(um)o(b)q(er,)g(otherwise)i(returns)g -Fu(#f)p FD(.)75 1860 y Fu(\(complex?)20 b FB(obj)6 b -Fu(\))1285 b FD(pro)q(cedure)75 1933 y(Returns)15 b(the)f(same)f -(result)i(as)f FB(numb)n(er?)5 b FD(.)18 b(Note)d(that)f(complex)e(n)o -(um)o(b)q(ers)i(are)g(not)g(implemen)o(ted.)75 2031 y -Fu(\(real?)21 b FB(obj)6 b Fu(\))1350 b FD(pro)q(cedure)75 -2105 y(Returns)15 b Fu(#t)e FD(if)g FB(obj)20 b FD(is)14 -b(a)f(\015oat)h(n)o(um)o(b)q(er,)f(otherwise)i(returns)g -Fu(#f)p FD(.)75 2203 y Fu(\(rational?)20 b FB(obj)6 b -Fu(\))1263 b FD(pro)q(cedure)75 2276 y(Returns)15 b(the)f(same)f -(result)i(as)f FB(numb)n(er?)5 b FD(.)18 b(Note)d(that)f(rational)e(n)o -(um)o(b)q(ers)i(are)g(not)g(implemen)o(ted.)75 2375 y -Fu(\(integer?)20 b FB(obj)6 b Fu(\))1285 b FD(pro)q(cedure)75 -2448 y(Returns)10 b Fu(#t)g FD(if)e FB(obj)16 b FD(is)9 -b(an)h(in)o(teger,)g(otherwise)h(returns)g Fu(#f)p FD(.)16 -b Fl(Note:)28 b Fs(The)9 b Fj(STk)g Fs(in)o(terpreter)h(distinguis)q -(hes)i(b)q(et)o(w)o(een)75 2498 y(in)o(tegers)i(whic)o(h)g(\014t)g(in)g -(a)f(C)g Ft(long)18 b(int)12 b Fs(\(min)o(us)i(8)f(bits\))h(and)g(in)o -(tegers)g(of)f(arbitrary)i(length)g(\(ak)n(a)e(\\bign)o(ums"\).)20 -b(This)75 2548 y(should)15 b(b)q(e)e(transparen)o(t)h(to)f(the)g(user,) -g(though.)75 2646 y Fu(\(exact?)20 b Fx(z)r Fu(\))1367 -b FD(pro)q(cedure)75 2696 y Fu(\(inexact?)20 b Fx(z)r -Fu(\))1323 b FD(pro)q(cedure)75 2769 y(In)18 b(this)g(implemen)o(tati)o -(on,)e(in)o(tegers)i(\(C)g Fu(long)j(int)c FD(or)h(\\bign)o(ums"\))e -(are)i(exact)h(n)o(um)o(b)q(ers)e(and)h(\015oats)g(are)75 -2819 y(inexact.)p eop +13 12 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(13)p 37 64 1838 2 v 37 190 a Fw(\(remq)24 b FD(obj)g(list)t +Fw(\))1328 b FF(pro)q(cedure)37 247 y Fw(\(remv)24 b +FD(obj)g(list)t Fw(\))1328 b FF(pro)q(cedure)37 303 y +Fw(\(remove)23 b FD(obj)h(list)t Fw(\))1281 b FF(pro)q(cedure)37 +385 y(Eac)o(h)18 b(function)g(return)f(a)g(cop)o(y)g(of)g +FD(list)k FF(where)c(all)h(the)g(o)q(ccurences)g(of)f +FD(obj)24 b FF(ha)o(v)o(e)17 b(b)q(een)h(deleted.)28 +b(The)37 441 y(predicate)17 b(used)e(to)g(test)g(the)g(presence)h(of)f +FD(obj)22 b FF(in)16 b FD(list)i FF(is)e(resp)q(ectiv)o(ely)h +Fw(eq)p FF(,)d Fw(eqv)h FF(and)h Fw(equal)p FF(.)37 493 +y Fn(Note:)37 b Fu(It)14 b(is)g(not)g(an)f(error)i(if)e +Fn(obj)20 b Fu(do)q(es)15 b(not)e(app)q(ear)i(in)e Fn(list)s +Fu(.)125 588 y Fv(\(remq)20 b(1)i('\(1)f(2)h(3\)\))239 +b Fu(=)-7 b Fp(\))22 b Fv(\(2)f(3\))125 638 y(\(remq)f("foo")h +('\("foo")g("bar"\)\))f Fu(=)-7 b Fp(\))22 b Fv(\("foo")e("bar"\))125 +688 y(\(remove)g("foo")h('\("foo")f("bar"\)\))735 738 +y Fu(=)-7 b Fp(\))22 b Fv(\("bar"\))37 960 y Fw(\(last-pair)h +FD(list)t Fw(\))1291 b FF(pro)q(cedure)37 1035 y(Returns)16 +b(the)g(last)f(pair)g(of)g FD(list)584 1018 y FA(2)603 +1035 y FF(.)125 1130 y Fv(\(last-pair)k('\(1)j(2)f(3\)\))343 +1180 y Fu(=)-7 b Fp(\))21 b Fv(3)125 1230 y(\(last-pair)e('\(1)j(2)f(.) +h(3\)\))343 1280 y Fu(=)-7 b Fp(\))21 b Fv(\(2)h(.)f(3\))37 +1502 y Fw(\(list*)j FD(obj)7 b Fw(\))1385 b FF(pro)q(cedure)37 +1577 y Fw(list*)16 b FF(is)g(lik)o(e)h Fw(list)e FF(except)h(that)f +(the)h(last)f(argumen)o(t)g(to)g Fw(list*)g FF(is)i(used)f(as)f(the)h +FD(c)n(dr)g FF(of)f(the)h(last)g(pair)37 1627 y(constructed.)125 +1722 y Fv(\(list*)k(1)i(2)f(3\))327 b Fu(=)-7 b Fp(\))22 +b Fv(\(1)f(2)h(.)f(3\))125 1772 y(\(list*)f(1)i(2)f(3)h('\(4)f(5\)\)) +174 b Fu(=)-7 b Fp(\))22 b Fv(\(1)f(2)h(3)f(4)h(5\))37 +1994 y Fw(\(copy-tree)h FD(obj)7 b Fw(\))1290 b FF(pro)q(cedure)37 +2076 y Fw(Copy-tree)14 b FF(recursiv)o(ely)j(copies)f(trees)f(of)g +(pairs.)20 b(If)c Fw(obj)e FF(is)i(not)f(a)g(pair,)g(it)g(is)h +(returned;)f(otherwise)h(the)37 2132 y(result)g(is)g(a)f(new)g(pair)g +(whose)g FD(c)n(ar)h FF(and)f FD(c)n(dr)g FF(are)g(obtained)h(b)o(y)f +(calling)h Fw(copy-tree)e FF(on)h(the)h FD(c)n(ar)f FF(and)g +FD(c)n(dr)37 2189 y FF(of)g Fw(obj)p FF(,)g(resp)q(ectiv)o(ely)l(.)37 +2327 y FI(6.4)56 b(Sym)n(b)r(ols)37 2416 y FF(The)20 +b FB(STk)f FF(reader)g(can)h(cop)q(e)g(with)f(sym)o(b)q(ols)h(whose)f +(names)h(con)o(tain)f(sp)q(ecial)i(c)o(haracters)e(or)g(letters)37 +2473 y(in)g(the)f(non)g(standard)f(case.)28 b(When)18 +b(a)g(sym)o(b)q(ol)g(is)g(read,)g(the)g(parts)f(enclosed)i(in)g(bars)e +(\(\\)p Fw(|)p FF("\))g(will)i(b)q(e)37 2529 y(en)o(tered)h(v)o +(erbatim)e(in)o(to)h(the)g(sym)o(b)q(ol's)f(name.)31 +b(The)19 b(\\)p Fw(|)p FF(")f(c)o(haracters)g(are)g(not)h(part)f(of)g +(the)h(sym)o(b)q(ol;)37 2586 y(they)13 b(only)h(serv)o(e)f(to)f +(delimit)j(the)e(sequence)h(of)e(c)o(haracters)g(that)h(m)o(ust)f(b)q +(e)i(en)o(tered)f(\\as)f(is".)19 b(In)14 b(order)f(to)37 +2642 y(main)o(tain)k(read-write)g(in)o(v)m(ariance,)h(sym)o(b)q(ols)e +(con)o(taining)i(suc)o(h)e(sequences)i(of)e(sp)q(ecial)i(c)o(haracters) +d(will)37 2699 y(b)q(e)h(written)g(b)q(et)o(w)o(een)f(a)g(pair)h(of)e +(\\)p Fw(|)p FF(")p 37 2745 735 2 v 89 2771 a Ft(2)107 +2787 y Fq(Last-pair)9 b Fs(w)o(as)k(a)g(standard)h(pro)q(cedure)g(in)g +Fr(R)813 2771 y Ft(3)824 2787 y Fj(RS)r Fs(.)p eop %%Page: 14 14 -14 13 bop 75 47 a FC(14)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(\(=)21 b Fx(z)159 185 y Fy(1)200 -179 y Fx(z)219 185 y Fy(2)260 179 y Fx(z)279 185 y Fy(3)320 -179 y Fx(:)7 b(:)g(:)e Fu(\))1262 b FD(pro)q(cedure)75 -229 y Fu(\(<)21 b Fx(x)164 235 y Fy(1)205 229 y Fx(x)229 -235 y Fy(2)269 229 y Fx(x)293 235 y Fy(3)333 229 y Fx(:)7 -b(:)g(:)e Fu(\))1249 b FD(pro)q(cedure)75 278 y Fu(\(>)21 -b Fx(x)164 284 y Fy(1)205 278 y Fx(x)229 284 y Fy(2)269 -278 y Fx(x)293 284 y Fy(3)333 278 y Fx(:)7 b(:)g(:)e -Fu(\))1249 b FD(pro)q(cedure)75 328 y Fu(\(<=)21 b Fx(x)186 -334 y Fy(1)226 328 y Fx(x)250 334 y Fy(2)290 328 y Fx(x)314 -334 y Fy(3)355 328 y Fx(:)7 b(:)g(:)e Fu(\))1227 b FD(pro)q(cedure)75 -378 y Fu(\(>=)21 b Fx(x)186 384 y Fy(1)226 378 y Fx(x)250 -384 y Fy(2)290 378 y Fx(x)314 384 y Fy(3)355 378 y Fx(:)7 -b(:)g(:)e Fu(\))1227 b FD(pro)q(cedure)75 428 y Fu(\(zero?)21 -b FB(z)5 b Fu(\))1387 b FD(pro)q(cedure)75 478 y Fu(\(positive?)20 -b FB(z)5 b Fu(\))1300 b FD(pro)q(cedure)75 527 y Fu(\(negative?)20 -b FB(z)5 b Fu(\))1300 b FD(pro)q(cedure)75 577 y Fu(\(odd?)21 -b FB(z)5 b Fu(\))1409 b FD(pro)q(cedure)75 627 y Fu(\(even?)21 -b FB(z)5 b Fu(\))1387 b FD(pro)q(cedure)75 677 y Fu(\(max)21 -b Fx(x)208 683 y Fy(1)248 677 y Fx(x)272 683 y Fy(2)312 -677 y Fx(:)7 b(:)g(:)f Fu(\))1269 b FD(pro)q(cedure)75 -727 y Fu(\(min)21 b Fx(x)208 733 y Fy(1)248 727 y Fx(x)272 -733 y Fy(2)312 727 y Fx(:)7 b(:)g(:)f Fu(\))1269 b FD(pro)q(cedure)75 -777 y Fu(\(+)21 b Fx(z)159 783 y Fy(1)200 777 y Fx(:)7 -b(:)g(:)e Fu(\))1382 b FD(pro)q(cedure)75 826 y Fu(\(*)21 -b Fx(z)159 832 y Fy(1)200 826 y Fx(:)7 b(:)g(:)e Fu(\))1382 -b FD(pro)q(cedure)75 876 y Fu(\(-)21 b Fx(z)159 882 y -Fy(1)200 876 y Fx(z)219 882 y Fy(2)238 876 y Fu(\))1399 -b FD(pro)q(cedure)75 926 y Fu(\(-)21 b Fx(z)s Fu(\))1475 -b FD(pro)q(cedure)75 976 y Fu(\(-)21 b Fx(z)159 982 y -Fy(1)200 976 y Fx(z)219 982 y Fy(2)260 976 y Fx(:)7 b(:)g(:)e -Fu(\))1322 b FD(pro)q(cedure)75 1026 y Fu(\(/)21 b Fx(z)159 -1032 y Fy(1)200 1026 y Fx(z)219 1032 y Fy(2)238 1026 -y Fu(\))1399 b FD(pro)q(cedure)75 1075 y Fu(\(/)21 b -Fx(z)s Fu(\))1475 b FD(pro)q(cedure)75 1125 y Fu(\(/)21 -b Fx(z)159 1131 y Fy(1)200 1125 y Fx(z)219 1131 y Fy(2)260 -1125 y Fx(:)7 b(:)g(:)e Fu(\))1322 b FD(pro)q(cedure)75 -1175 y Fu(\(abs)21 b FB(x)5 b Fu(\))1429 b FD(pro)q(cedure)75 -1225 y Fu(\(quotient)20 b Fx(n)318 1231 y Fy(1)358 1225 -y Fx(n)383 1231 y Fy(2)402 1225 y Fu(\))1235 b FD(pro)q(cedure)75 -1275 y Fu(\(remainder)20 b Fx(n)340 1281 y Fy(1)380 1275 -y Fx(n)405 1281 y Fy(2)424 1275 y Fu(\))1213 b FD(pro)q(cedure)75 -1324 y Fu(\(modulo)20 b Fx(n)274 1330 y Fy(1)315 1324 -y Fx(n)340 1330 y Fy(2)358 1324 y Fu(\))1279 b FD(pro)q(cedure)75 -1374 y Fu(\(gcd)21 b Fx(n)209 1380 y Fy(1)249 1374 y -Fx(:)7 b(:)g(:)f Fu(\))1332 b FD(pro)q(cedure)75 1424 -y Fu(\(lcm)21 b Fx(n)209 1430 y Fy(1)249 1424 y Fx(:)7 -b(:)g(:)f Fu(\))1332 b FD(pro)q(cedure)75 1500 y FB(Identic)n(al)15 -b(to)g(R)325 1485 y Fy(4)344 1500 y FB(RS.)75 1623 y -Fu(\(numerator)20 b Fx(q)q Fu(\))1302 b FD(pro)q(cedure)75 -1673 y Fu(\(denominator)19 b Fx(q)q Fu(\))1259 b FD(pro)q(cedure)75 -1749 y(Not)14 b(implemen)o(ted.)75 1872 y Fu(\(floor)21 -b FB(x)5 b Fu(\))1385 b FD(pro)q(cedure)75 1922 y Fu(\(ceiling)20 -b FB(x)5 b Fu(\))1342 b FD(pro)q(cedure)75 1972 y Fu(\(truncate)20 -b FB(x)5 b Fu(\))1320 b FD(pro)q(cedure)75 2022 y Fu(\(round)21 -b FB(x)5 b Fu(\))1385 b FD(pro)q(cedure)75 2098 y FB(Identic)n(al)15 -b(to)g(R)325 2083 y Fy(4)344 2098 y FB(RS.)75 2221 y -Fu(\(rationalize)k FB(x)j(y)t Fu(\))1214 b FD(pro)q(cedure)75 -2297 y(not)14 b(y)o(et)g(implemen)o(ted.)75 2420 y Fu(\(exp)21 -b Fx(z)r Fu(\))1432 b FD(pro)q(cedure)75 2470 y Fu(\(log)21 -b Fx(z)r Fu(\))1432 b FD(pro)q(cedure)75 2520 y Fu(\(sin)21 -b Fx(z)r Fu(\))1432 b FD(pro)q(cedure)75 2570 y Fu(\(cos)21 -b Fx(z)r Fu(\))1432 b FD(pro)q(cedure)75 2620 y Fu(\(tan)21 -b Fx(z)r Fu(\))1432 b FD(pro)q(cedure)75 2669 y Fu(\(asin)21 -b Fx(z)r Fu(\))1410 b FD(pro)q(cedure)75 2719 y Fu(\(acos)21 -b Fx(z)r Fu(\))1410 b FD(pro)q(cedure)75 2769 y Fu(\(atan)21 -b Fx(z)r Fu(\))1410 b FD(pro)q(cedure)75 2819 y Fu(\(atan)21 -b Fx(y)i(x)p Fu(\))1364 b FD(pro)q(cedure)p eop +14 13 bop 37 45 a FE(14)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 125 190 a Fv('|x|)522 b Fu(=)-7 b Fp(\))22 +b Fv(x)125 240 y(\(string->symbol)c("X"\))174 b Fu(=)-7 +b Fp(\))22 b Fv(|X|)125 290 y(\(symbol->string)c('|X|\))152 +b Fu(=)-7 b Fp(\))22 b Fv("X")125 340 y('|a)43 b(b|)457 +b Fu(=)-7 b Fp(\))22 b Fv(|a)43 b(b|)125 390 y('a|B|c)478 +b Fu(=)-7 b Fp(\))22 b Fv(|aBc|)125 439 y(\(write)e('|FoO|\))304 +b Fu(=)-7 b Fp(\))22 b Fv(writes)e(the)h(string)g("|FoO|")125 +489 y(\(display)f('|FoO|\))260 b Fu(=)-7 b Fp(\))22 b +Fv(writes)e(the)h(string)g("FoO")37 639 y Fn(Note:)44 +b Fu(This)16 b(notation)f(has)g(b)q(een)i(in)o(tro)q(duced)g(b)q +(ecause)g Fn(R)1014 624 y Fm(4)1026 639 y Fl(RS)h Fu(states)f(that)f +(case)h(m)o(ust)d(not)i(b)q(e)g(signi\014can)o(t)f(in)37 +695 y(sym)o(b)q(ols)f(whereas)i(the)f(Tk)g(to)q(olkit)e(is)i(case)g +(signi\014can)o(t)g(\(or)f(more)g(precisely)i(thinks)e(it)h(runs)g(o)o +(v)o(er)g(Tcl)g(whic)o(h)f(is)37 752 y(case)h(signi\014can)o(t\).)j(Ho) +o(w)o(ev)o(er,)c(sym)o(b)q(ols)e(con)o(taining)h(the)i(c)o(haracter)g +(\\)p Fv(|)p Fu(")e(itself)h(still)f(can't)g(b)q(e)i(read)f(in.)37 +868 y Fw(\(symbol?)23 b FD(obj)7 b Fw(\))1338 b FF(pro)q(cedure)37 +948 y(Returns)16 b Fw(#t)f FF(if)h FD(obj)22 b FF(is)15 +b(a)g(sym)o(b)q(ol,)g(otherwise)h(returns)f Fw(#f)p FF(.)125 +1041 y Fv(\(symbol?)20 b('foo\))304 b Fu(=)-7 b Fp(\))43 +b Fv(#t)125 1091 y(\(symbol?)20 b(\(car)h('\(a)g(b\)\)\))130 +b Fu(=)-7 b Fp(\))43 b Fv(#t)125 1141 y(\(symbol?)20 +b("bar"\))282 b Fu(=)-7 b Fp(\))43 b Fv(#f)125 1190 y(\(symbol?)20 +b('nil\))304 b Fu(=)-7 b Fp(\))43 b Fv(#t)125 1240 y(\(symbol?)20 +b('\(\)\))326 b Fu(=)-7 b Fp(\))43 b Fv(#f)125 1290 y(\(symbol?)20 +b(#f\))348 b Fu(=)-7 b Fp(\))43 b Fv(#f)125 1340 y(\(symbol?)20 +b(:key\))304 b Fu(=)-7 b Fp(\))43 b Fv(#f)37 1544 y Fw +(\(symbol->string)22 b FD(symb)n(ol)5 b Fw(\))1099 b +FF(pro)q(cedure)37 1600 y Fw(\(string->symbol)22 b FD(string)t +Fw(\))1118 b FF(pro)q(cedure)37 1680 y FD(Identic)n(al)15 +b(to)i(R)311 1664 y FA(4)331 1680 y FD(RS.)37 1791 y +Fw(\(gensym\))1450 b FF(pro)q(cedure)37 1847 y Fw(\(gensym)23 +b FD(pr)n(e\014x)5 b Fw(\))1314 b FF(pro)q(cedure)37 +1921 y Fw(Gensym)17 b FF(creates)g(a)f(new)i(sym)o(b)q(ol.)26 +b(The)17 b(prin)o(t)h(name)f(of)g(the)g(generated)g(sym)o(b)q(ol)h +(consists)f(of)g(a)f(pre\014x)37 1971 y(\(whic)o(h)23 +b(defaults)f(to)e Fw("G")p FF(\))h(follo)o(w)o(ed)h(b)o(y)f(the)h +(decimal)h(represen)o(tation)f(of)f(a)g(n)o(um)o(b)q(er.)39 +b(If)22 b FD(pr)n(e\014x)k FF(is)37 2020 y(sp)q(eci\014ed,)17 +b(it)f(m)o(ust)f(b)q(e)g(a)g(string.)125 2102 y Fv(\(gensym\))343 +2152 y Fu(=)-7 b Fp(\))21 b Fv(|G100|)125 2202 y(\(gensym)f("foo-"\)) +343 2252 y Fu(=)-7 b Fp(\))21 b Fv(foo-101)37 2449 y +FI(6.5)56 b(Num)n(b)r(ers)37 2535 y FF(The)18 b(only)f(n)o(um)o(b)q +(ers)h(recognized)g(b)o(y)f FB(STk)f FF(are)h(in)o(tegers)g(\(with)g +(arbitrary)f(precision\))i(and)f(reals)h(\(im-)37 2592 +y(plemen)o(ted)f(as)e(C)g Fw(double)23 b(float)p FF(s\).)37 +2707 y Fw(\(number?)g FD(obj)7 b Fw(\))1338 b FF(pro)q(cedure)37 +2787 y(Returns)16 b Fw(#t)f FF(if)h FD(obj)22 b FF(is)15 +b(a)g(n)o(um)o(b)q(er,)g(otherwise)h(returns)f Fw(#f)p +FF(.)p eop %%Page: 15 15 -15 14 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(15)p 75 64 1763 2 v 376 139 1161 2 v 375 185 2 46 v -401 171 a Fl(name)p 515 185 V 49 w(value)p 650 185 V -48 w(alternate)11 b(name)p 951 185 V 960 185 V 57 w(name)p -1100 185 V 49 w(value)p 1235 185 V 48 w(alternate)h(name)p -1536 185 V 376 186 1161 2 v 375 232 2 46 v 420 218 a -Fs(n)o(ul)p 515 232 V 84 w(000)p 650 232 V 158 w(n)o(ull)p -951 232 V 960 232 V 181 w(bs)p 1100 232 V 91 w(010)p -1235 232 V 107 w(bac)o(kspace)p 1536 232 V 375 278 V -418 264 a(soh)p 515 278 V 82 w(001)p 650 278 V 951 278 -V 960 278 V 401 w(h)o(t)p 1100 278 V 91 w(011)p 1235 -278 V 162 w(tab)p 1536 278 V 375 323 V 421 310 a(stx)p -515 323 V 84 w(002)p 650 323 V 951 323 V 960 323 V 402 -w(nl)p 1100 323 V 94 w(012)p 1235 323 V 127 w(newline)p -1536 323 V 375 369 V 420 355 a(etx)p 515 369 V 83 w(003)p -650 369 V 951 369 V 960 369 V 401 w(vt)p 1100 369 V 91 -w(013)p 1235 369 V 1536 369 V 375 415 V 420 401 a(eot)p -515 415 V 84 w(004)p 650 415 V 951 415 V 960 415 V 397 -w(np)p 1100 415 V 88 w(014)p 1235 415 V 152 w(page)p -1536 415 V 375 460 V 416 447 a(enq)p 515 460 V 81 w(005)p -650 460 V 951 460 V 960 460 V 402 w(cr)p 1100 460 V 93 -w(015)p 1235 460 V 138 w(return)p 1536 460 V 375 506 -V 418 492 a(ac)o(k)p 515 506 V 82 w(006)p 650 506 V 951 -506 V 960 506 V 401 w(so)p 1100 506 V 92 w(016)p 1235 -506 V 1536 506 V 375 575 2 70 v 421 538 a(b)q(el)p 515 -575 V 85 w(007)p 650 575 V 159 w(b)q(ell)p 951 575 V -960 575 V 187 w(si)p 1100 575 V 97 w(017)p 1235 575 V -1536 575 V 375 621 2 46 v 421 607 a(dle)p 515 621 V 86 -w(020)p 650 621 V 951 621 V 960 621 V 390 w(can)p 1100 -621 V 80 w(030)p 1235 621 V 1536 621 V 375 666 V 417 -653 a(dc1)p 515 666 V 81 w(021)p 650 666 V 951 666 V -960 666 V 394 w(em)p 1100 666 V 84 w(031)p 1235 666 V -1536 666 V 375 712 V 417 698 a(dc2)p 515 712 V 81 w(022)p -650 712 V 951 712 V 960 712 V 389 w(sub)p 1100 712 V -81 w(032)p 1235 712 V 1536 712 V 375 758 V 417 744 a(dc3)p -515 758 V 81 w(023)p 650 758 V 951 758 V 960 758 V 394 -w(esc)p 1100 758 V 84 w(033)p 1235 758 V 136 w(escap)q(e)p -1536 758 V 375 803 V 417 790 a(dc4)p 515 803 V 81 w(024)p -650 803 V 951 803 V 960 803 V 405 w(fs)p 1100 803 V 95 -w(034)p 1235 803 V 1536 803 V 375 849 V 415 835 a(nak)p -515 849 V 80 w(025)p 650 849 V 951 849 V 960 849 V 401 -w(gs)p 1100 849 V 92 w(035)p 1235 849 V 1536 849 V 375 -895 V 417 881 a(syn)p 515 895 V 82 w(026)p 650 895 V -951 895 V 960 895 V 403 w(rs)p 1100 895 V 94 w(036)p -1235 895 V 1536 895 V 375 964 2 70 v 419 927 a(etb)p -515 964 V 83 w(027)p 650 964 V 951 964 V 960 964 V 400 -w(us)p 1100 964 V 91 w(037)p 1235 964 V 1536 964 V 375 -1033 V 428 996 a(sp)p 515 1033 V 91 w(040)p 650 1033 -V 145 w(space)p 951 1033 V 960 1033 V 1100 1033 V 1235 -1033 V 1536 1033 V 375 1079 2 46 v 421 1065 a(del)p 515 -1079 V 86 w(177)p 650 1079 V 140 w(delete)p 951 1079 -V 960 1079 V 1100 1079 V 1235 1079 V 1536 1079 V 376 -1081 1161 2 v 665 1197 a FD(T)m(able)i(1:)j(V)m(alid)c(c)o(haracter)i -(names)75 1322 y Fu(\(sqrt)21 b Fx(z)r Fu(\))1410 b FD(pro)q(cedure)75 -1372 y Fu(\(expt)21 b Fx(z)225 1378 y Fy(1)265 1372 y -Fx(z)284 1378 y Fy(2)303 1372 y Fu(\))1334 b FD(pro)q(cedure)75 -1446 y FB(Identic)n(al)15 b(to)g(R)325 1431 y Fy(4)344 -1446 y FB(RS.)75 1556 y Fu(\(make-rectangular)j Fx(x)491 -1562 y Fy(1)531 1556 y Fx(x)555 1562 y Fy(2)574 1556 -y Fu(\))1063 b FD(pro)q(cedure)75 1606 y Fu(\(make-polar)20 -b Fx(x)361 1612 y Fy(1)401 1606 y Fx(x)425 1612 y Fy(2)443 -1606 y Fu(\))1194 b FD(pro)q(cedure)75 1656 y Fu(\(real-part)20 -b Fx(z)r Fu(\))1301 b FD(pro)q(cedure)75 1706 y Fu(\(imag-part)20 -b Fx(z)r Fu(\))1301 b FD(pro)q(cedure)75 1756 y Fu(\(magnitude)20 -b Fx(z)r Fu(\))1301 b FD(pro)q(cedure)75 1805 y Fu(\(angle)21 -b Fx(z)r Fu(\))1388 b FD(pro)q(cedure)75 1879 y(These)15 -b(pro)q(cedures)h(are)f(not)e(implemen)o(ted)f(since)j(complex)d(n)o -(um)o(b)q(ers)i(are)g(not)g(de\014ned.)75 1989 y Fu(\(exact->inexact)19 -b Fx(z)r Fu(\))1192 b FD(pro)q(cedure)75 2039 y Fu(\(inexact->exact)19 -b Fx(z)r Fu(\))1192 b FD(pro)q(cedure)75 2089 y Fu(\(number->string)19 -b FB(numb)n(er)t Fu(\))1076 b FD(pro)q(cedure)75 2139 -y Fu(\(number->string)19 b FB(numb)n(er)j(r)n(adix)5 -b Fu(\))963 b FD(pro)q(cedure)75 2189 y Fu(\(string->number)19 -b FB(string)t Fu(\))1105 b FD(pro)q(cedure)75 2238 y -Fu(\(string->number)19 b FB(string)i(r)n(adix)5 b Fu(\))993 -b FD(pro)q(cedure)75 2312 y FB(Identic)n(al)15 b(to)g(R)325 -2297 y Fy(4)344 2312 y FB(RS.)75 2435 y FG(6.6)56 b(Characters)75 -2512 y FD(T)m(able)14 b(1)g(giv)o(es)h(the)g(list)f(of)h(allo)o(w)o(ed) -e(c)o(haracter)j(names)e(together)i(with)e(their)h(ASCI)q(I)g(equiv)n -(alen)o(t)f(expressed)75 2562 y(in)f(o)q(ctal.)75 2669 -y Fu(\(char?)21 b FB(obj)6 b Fu(\))1350 b FD(pro)q(cedure)75 -2719 y Fu(\(char=?)20 b FB(char)328 2725 y Fy(1)369 2719 -y FB(char)448 2725 y Fy(2)466 2719 y Fu(\))1171 b FD(pro)q(cedure)75 -2769 y Fu(\(char?)20 b FB(char)328 2825 y Fy(1)369 2819 -y FB(char)448 2825 y Fy(2)466 2819 y Fu(\))1171 b FD(pro)q(cedure)p -eop +15 14 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(15)p 37 64 1838 2 v 37 190 a Fw(\(complex?)23 b FD(obj)7 +b Fw(\))1314 b FF(pro)q(cedure)37 272 y(Returns)16 b(the)g(same)e +(result)i(as)f FD(numb)n(er?)5 b FF(.)20 b(Note)15 b(that)g(complex)h +(n)o(um)o(b)q(ers)f(are)g(not)g(implemen)o(ted.)37 405 +y Fw(\(real?)24 b FD(obj)7 b Fw(\))1385 b FF(pro)q(cedure)37 +487 y(Returns)16 b Fw(#t)f FF(if)h FD(obj)22 b FF(is)15 +b(a)g(\015oat)g(n)o(um)o(b)q(er,)g(otherwise)g(returns)g +Fw(#f)p FF(.)37 619 y Fw(\(rational?)23 b FD(obj)7 b +Fw(\))1290 b FF(pro)q(cedure)37 701 y(Returns)16 b(the)g(same)e(result) +i(as)f FD(numb)n(er?)5 b FF(.)20 b(Note)15 b(that)g(rational)g(n)o(um)o +(b)q(ers)g(are)g(not)g(implemen)o(ted.)37 834 y Fw(\(integer?)23 +b FD(obj)7 b Fw(\))1314 b FF(pro)q(cedure)37 916 y(Returns)17 +b Fw(#t)e FF(if)i FD(obj)22 b FF(is)17 b(an)e(in)o(teger,)h(otherwise)g +(returns)g Fw(#f)p FF(.)22 b Fn(Note:)39 b Fu(The)15 +b Fk(STk)f Fu(in)o(terpreter)j(distinguishes)37 972 y(b)q(et)o(w)o(een) +22 b(in)o(tegers)g(whic)o(h)e(\014t)h(in)f(a)g(C)g Fv(long)h(int)f +Fu(\(min)o(us)f(8)h(bits\))h(and)f(in)o(tegers)h(of)f(arbitrary)g +(length)h(\(ak)n(a)37 1029 y(\\bign)o(ums"\).)16 b(This)e(should)g(b)q +(e)g(transparen)o(t)h(to)f(the)h(user,)f(though.)37 1161 +y Fw(\(exact?)23 b Fz(z)s Fw(\))1403 b FF(pro)q(cedure)37 +1218 y Fw(\(inexact?)23 b Fz(z)r Fw(\))1356 b FF(pro)q(cedure)37 +1300 y(In)20 b(this)f(implemen)o(tation,)h(in)o(tegers)f(\(C)f +Fw(long)23 b(int)18 b FF(or)g(\\bign)o(ums"\))h(are)f(exact)g(n)o(um)o +(b)q(ers)h(and)g(\015oats)37 1356 y(are)c(inexact.)37 +1489 y Fw(\(=)24 b Fz(z)130 1496 y FA(1)174 1489 y Fz(z)195 +1496 y FA(2)239 1489 y Fz(z)260 1496 y FA(3)303 1489 +y Fz(:)8 b(:)g(:)e Fw(\))1291 b FF(pro)q(cedure)37 1545 +y Fw(\(<)24 b Fz(x)135 1552 y FA(1)179 1545 y Fz(x)205 +1552 y FA(2)248 1545 y Fz(x)274 1552 y FA(3)318 1545 +y Fz(:)8 b(:)g(:)d Fw(\))1277 b FF(pro)q(cedure)37 1602 +y Fw(\(>)24 b Fz(x)135 1609 y FA(1)179 1602 y Fz(x)205 +1609 y FA(2)248 1602 y Fz(x)274 1609 y FA(3)318 1602 +y Fz(:)8 b(:)g(:)d Fw(\))1277 b FF(pro)q(cedure)37 1658 +y Fw(\(<=)24 b Fz(x)159 1665 y FA(1)203 1658 y Fz(x)229 +1665 y FA(2)272 1658 y Fz(x)298 1665 y FA(3)342 1658 +y Fz(:)8 b(:)g(:)d Fw(\))1253 b FF(pro)q(cedure)37 1715 +y Fw(\(>=)24 b Fz(x)159 1722 y FA(1)203 1715 y Fz(x)229 +1722 y FA(2)272 1715 y Fz(x)298 1722 y FA(3)342 1715 +y Fz(:)8 b(:)g(:)d Fw(\))1253 b FF(pro)q(cedure)37 1771 +y Fw(\(zero?)24 b FD(z)6 b Fw(\))1425 b FF(pro)q(cedure)37 +1828 y Fw(\(positive?)23 b FD(z)6 b Fw(\))1330 b FF(pro)q(cedure)37 +1884 y Fw(\(negative?)23 b FD(z)6 b Fw(\))1330 b FF(pro)q(cedure)37 +1941 y Fw(\(odd?)24 b FD(z)6 b Fw(\))1449 b FF(pro)q(cedure)37 +1997 y Fw(\(even?)24 b FD(z)6 b Fw(\))1425 b FF(pro)q(cedure)37 +2053 y Fw(\(max)24 b Fz(x)183 2060 y FA(1)226 2053 y +Fz(x)252 2060 y FA(2)296 2053 y Fz(:)8 b(:)g(:)e Fw(\))1298 +b FF(pro)q(cedure)37 2110 y Fw(\(min)24 b Fz(x)183 2117 +y FA(1)226 2110 y Fz(x)252 2117 y FA(2)296 2110 y Fz(:)8 +b(:)g(:)e Fw(\))1298 b FF(pro)q(cedure)37 2166 y Fw(\(+)24 +b Fz(z)130 2173 y FA(1)174 2166 y Fz(:)8 b(:)g(:)d Fw(\))1421 +b FF(pro)q(cedure)37 2223 y Fw(\(*)24 b Fz(z)130 2230 +y FA(1)174 2223 y Fz(:)8 b(:)g(:)d Fw(\))1421 b FF(pro)q(cedure)37 +2279 y Fw(\(-)24 b Fz(z)130 2286 y FA(1)174 2279 y Fz(z)195 +2286 y FA(2)215 2279 y Fw(\))1440 b FF(pro)q(cedure)37 +2336 y Fw(\(-)24 b Fz(z)r Fw(\))1523 b FF(pro)q(cedure)37 +2392 y Fw(\(-)24 b Fz(z)130 2399 y FA(1)174 2392 y Fz(z)195 +2399 y FA(2)239 2392 y Fz(:)8 b(:)g(:)d Fw(\))1356 b +FF(pro)q(cedure)37 2449 y Fw(\(/)24 b Fz(z)130 2456 y +FA(1)174 2449 y Fz(z)195 2456 y FA(2)215 2449 y Fw(\))1440 +b FF(pro)q(cedure)37 2505 y Fw(\(/)24 b Fz(z)r Fw(\))1523 +b FF(pro)q(cedure)37 2562 y Fw(\(/)24 b Fz(z)130 2569 +y FA(1)174 2562 y Fz(z)195 2569 y FA(2)239 2562 y Fz(:)8 +b(:)g(:)d Fw(\))1356 b FF(pro)q(cedure)37 2618 y Fw(\(abs)24 +b FD(x)5 b Fw(\))1472 b FF(pro)q(cedure)37 2674 y Fw(\(quotient)23 +b Fz(n)303 2681 y FA(1)347 2674 y Fz(n)374 2681 y FA(2)394 +2674 y Fw(\))1261 b FF(pro)q(cedure)37 2731 y Fw(\(remainder)23 +b Fz(n)327 2738 y FA(1)371 2731 y Fz(n)398 2738 y FA(2)418 +2731 y Fw(\))1237 b FF(pro)q(cedure)37 2787 y Fw(\(modulo)23 +b Fz(n)255 2794 y FA(1)299 2787 y Fz(n)326 2794 y FA(2)346 +2787 y Fw(\))1309 b FF(pro)q(cedure)p eop %%Page: 16 16 -16 15 bop 75 47 a FC(16)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 404 139 1105 2 v 403 185 2 46 v 453 171 -a Fl(Se)n(quenc)n(e)p 649 185 V 649 185 V 321 w(Char)n(acter)e(inserte) -n(d)p 1508 185 V 404 186 1105 2 v 403 232 2 46 v 429 -218 a Ft(\\)p Fs(b)p 649 232 V 205 w(Bac)o(kspace)p 1508 -232 V 403 278 V 429 264 a Ft(\\)p Fs(e)p 649 278 V 209 -w(Escap)q(e)p 1508 278 V 403 323 V 429 310 a Ft(\\)p -Fs(n)p 649 323 V 205 w(Newline)p 1508 323 V 403 369 V -429 355 a Ft(\\)p Fs(t)p 649 369 V 211 w(Horizon)o(tal)j(T)m(ab)p -1508 369 V 403 415 V 429 401 a Ft(\\)p Fs(n)p 649 415 -V 205 w(Carriage)f(Return)p 1508 415 V 403 460 V 429 -447 a Ft(\\)p Fs(0ab)q(c)p 649 460 V 149 w(ASCI)q(I)e(c)o(haracter)i -(with)f(o)q(ctal)h(v)n(alue)h(ab)q(c)p 1508 460 V 403 -506 V 429 492 a Ft(\\)p 649 506 V 47 w Fs(None)e(\(p)q -(ermits)h(to)f(en)o(ter)g(a)g(string)h(on)g(sev)o(eral)g(lines\))p -1508 506 V 403 552 V 429 538 a Ft(\\)p 649 552 -V 86 w()p 1508 552 V 404 553 1105 2 v 659 669 -a FD(T)m(able)f(2:)18 b(String)13 b(escap)q(e)j(sequences)75 -798 y Fu(\(char<=?)k FB(char)350 804 y Fy(1)391 798 y -FB(char)470 804 y Fy(2)488 798 y Fu(\))1149 b FD(pro)q(cedure)75 -848 y Fu(\(char>=?)20 b FB(char)350 854 y Fy(1)391 848 -y FB(char)470 854 y Fy(2)488 848 y Fu(\))1149 b FD(pro)q(cedure)75 -898 y Fu(\(char-ci=?)20 b FB(char)394 904 y Fy(1)434 -898 y FB(char)513 904 y Fy(2)532 898 y Fu(\))1105 b FD(pro)q(cedure)75 -948 y Fu(\(char-ci?)20 b FB(char)394 1003 y Fy(1)434 -997 y FB(char)513 1003 y Fy(2)532 997 y Fu(\))1105 b -FD(pro)q(cedure)75 1047 y Fu(\(char-ci<=?)20 b FB(char)416 -1053 y Fy(1)456 1047 y FB(char)535 1053 y Fy(2)554 1047 -y Fu(\))1083 b FD(pro)q(cedure)75 1097 y Fu(\(char-ci>=?)20 -b FB(char)416 1103 y Fy(1)456 1097 y FB(char)535 1103 -y Fy(2)554 1097 y Fu(\))1083 b FD(pro)q(cedure)75 1147 -y Fu(\(char-alphabetic?)18 b FB(char)t Fu(\))1087 b FD(pro)q(cedure)75 -1197 y Fu(\(char-numeric?)19 b FB(char)t Fu(\))1152 b -FD(pro)q(cedure)75 1246 y Fu(\(char-whitespace?)18 b -FB(char)t Fu(\))1087 b FD(pro)q(cedure)75 1296 y Fu(\(char-upper-case?) -18 b FB(letter)t Fu(\))1071 b FD(pro)q(cedure)75 1346 -y Fu(\(char-lower-case?)18 b FB(letter)t Fu(\))1071 b -FD(pro)q(cedure)75 1396 y Fu(\(char->integer)19 b FB(char)t -Fu(\))1152 b FD(pro)q(cedure)75 1446 y Fu(\(integer->char)19 -b Fx(n)p Fu(\))1210 b FD(pro)q(cedure)75 1495 y Fu(\(char-upcase)19 -b FB(char)t Fu(\))1196 b FD(pro)q(cedure)75 1545 y Fu(\(char-downcase) -19 b FB(char)t Fu(\))1152 b FD(pro)q(cedure)75 1619 y -FB(Identic)n(al)15 b(to)g(R)325 1604 y Fy(4)344 1619 -y FB(RS.)75 1730 y FG(6.7)56 b(Strings)75 1807 y Fz(STk)21 -b FD(string)f(constan)o(ts)i(allo)o(w)d(the)i(insertion)f(of)g -(arbitrary)g(c)o(haracters)j(b)o(y)d(enco)q(ding)h(them)e(as)i(escap)q -(e)75 1857 y(sequences,)c(in)o(tro)q(duced)f(b)o(y)f(a)f(bac)o(kslash)h -(\()p Fu(\\)p FD(\).)21 b(The)16 b(v)n(alid)d(escap)q(e)k(sequences)g -(are)e(sho)o(wn)g(in)g(T)m(able)f(2.)21 b(F)m(or)75 1906 -y(instance,)14 b(the)h(string)153 1989 y Ft("ab\\040c\\nd)o(\\)153 -2035 y(e")75 2167 y FD(is)f(the)g(string)g(consisting)g(of)f(the)i(c)o -(haracters)g Fu(#\\)p FD(a,)e Fu(#\\)p FD(b,)p Fu(#\\)p -FD(space,)g Fu(#\\)p FD(c,)h Fu(#\\)p FD(newline,)f Fu(#\\)p -FD(d)g(and)h Fu(#\\)p FD(e.)75 2271 y Fu(\(string?)20 -b FB(obj)6 b Fu(\))1307 b FD(pro)q(cedure)75 2321 y Fu(\(make-string)19 -b Fx(k)q Fu(\))1256 b FD(pro)q(cedure)75 2371 y Fu(\(make-string)19 -b Fx(k)k FB(char)t Fu(\))1151 b FD(pro)q(cedure)75 2420 -y Fu(\(string)20 b FB(char)i Fx(:)7 b(:)g(:)f Fu(\))1231 -b FD(pro)q(cedure)75 2470 y Fu(\(string-length)19 b FB(string)t -Fu(\))1127 b FD(pro)q(cedure)75 2520 y Fu(\(string-ref)20 -b FB(string)h Fx(k)q Fu(\))1152 b FD(pro)q(cedure)75 -2570 y Fu(\(string-set!)19 b FB(string)j(k)f(char)t Fu(\))1030 -b FD(pro)q(cedure)75 2620 y Fu(\(string=?)20 b FB(string)397 -2626 y Fy(1)437 2620 y FB(string)541 2626 y Fy(2)559 -2620 y Fu(\))1078 b FD(pro)q(cedure)75 2669 y Fu(\(string-ci=?)19 -b FB(string)462 2675 y Fy(1)502 2669 y FB(string)606 -2675 y Fy(2)624 2669 y Fu(\))1013 b FD(pro)q(cedure)75 -2719 y Fu(\(string?)20 b FB(string)397 -2775 y Fy(1)437 2769 y FB(string)541 2775 y Fy(2)559 -2769 y Fu(\))1078 b FD(pro)q(cedure)75 2819 y Fu(\(string<=?)20 -b FB(string)419 2825 y Fy(1)459 2819 y FB(string)563 -2825 y Fy(2)581 2819 y Fu(\))1056 b FD(pro)q(cedure)p -eop +16 15 bop 37 45 a FE(16)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a Fw(\(gcd)24 b Fz(n)184 197 y +FA(1)228 190 y Fz(:)8 b(:)g(:)d Fw(\))1367 b FF(pro)q(cedure)37 +247 y Fw(\(lcm)24 b Fz(n)184 254 y FA(1)228 247 y Fz(:)8 +b(:)g(:)d Fw(\))1367 b FF(pro)q(cedure)37 327 y FD(Identic)n(al)15 +b(to)i(R)311 310 y FA(4)331 327 y FD(RS.)37 433 y Fw(\(numerator)23 +b Fz(q)r Fw(\))1333 b FF(pro)q(cedure)37 489 y Fw(\(denominator)23 +b Fz(q)r Fw(\))1285 b FF(pro)q(cedure)37 569 y(Not)15 +b(implemen)o(ted.)37 675 y Fw(\(floor)24 b FD(x)5 b Fw(\))1424 +b FF(pro)q(cedure)37 731 y Fw(\(ceiling)23 b FD(x)5 b +Fw(\))1377 b FF(pro)q(cedure)37 788 y Fw(\(truncate)23 +b FD(x)5 b Fw(\))1353 b FF(pro)q(cedure)37 844 y Fw(\(round)24 +b FD(x)5 b Fw(\))1424 b FF(pro)q(cedure)37 924 y FD(Identic)n(al)15 +b(to)i(R)311 908 y FA(4)331 924 y FD(RS.)37 1030 y Fw(\(rationalize)23 +b FD(x)h(y)t Fw(\))1236 b FF(pro)q(cedure)37 1110 y(not)15 +b(y)o(et)g(implemen)o(ted.)37 1216 y Fw(\(exp)24 b Fz(z)r +Fw(\))1475 b FF(pro)q(cedure)37 1272 y Fw(\(log)24 b +Fz(z)r Fw(\))1475 b FF(pro)q(cedure)37 1328 y Fw(\(sin)24 +b Fz(z)r Fw(\))1475 b FF(pro)q(cedure)37 1385 y Fw(\(cos)24 +b Fz(z)r Fw(\))1475 b FF(pro)q(cedure)37 1441 y Fw(\(tan)24 +b Fz(z)r Fw(\))1475 b FF(pro)q(cedure)37 1498 y Fw(\(asin)24 +b Fz(z)r Fw(\))1451 b FF(pro)q(cedure)37 1554 y Fw(\(acos)24 +b Fz(z)r Fw(\))1451 b FF(pro)q(cedure)37 1611 y Fw(\(atan)24 +b Fz(z)r Fw(\))1451 b FF(pro)q(cedure)37 1667 y Fw(\(atan)24 +b Fz(y)h(x)p Fw(\))1401 b FF(pro)q(cedure)37 1724 y Fw(\(sqrt)24 +b Fz(z)r Fw(\))1451 b FF(pro)q(cedure)37 1780 y Fw(\(expt)24 +b Fz(z)202 1787 y FA(1)245 1780 y Fz(z)266 1787 y FA(2)286 +1780 y Fw(\))1369 b FF(pro)q(cedure)37 1860 y FD(Identic)n(al)15 +b(to)i(R)311 1844 y FA(4)331 1860 y FD(RS.)37 1966 y +Fw(\(make-rectangular)22 b Fz(x)493 1973 y FA(1)537 1966 +y Fz(x)563 1973 y FA(2)582 1966 y Fw(\))1073 b FF(pro)q(cedure)37 +2022 y Fw(\(make-polar)23 b Fz(x)350 2029 y FA(1)393 +2022 y Fz(x)419 2029 y FA(2)439 2022 y Fw(\))1216 b FF(pro)q(cedure)37 +2079 y Fw(\(real-part)23 b Fz(z)r Fw(\))1332 b FF(pro)q(cedure)37 +2135 y Fw(\(imag-part)23 b Fz(z)r Fw(\))1332 b FF(pro)q(cedure)37 +2192 y Fw(\(magnitude)23 b Fz(z)r Fw(\))1332 b FF(pro)q(cedure)37 +2248 y Fw(\(angle)24 b Fz(z)r Fw(\))1427 b FF(pro)q(cedure)37 +2328 y(These)16 b(pro)q(cedures)g(are)f(not)g(implemen)o(ted)i(since)f +(complex)g(n)o(um)o(b)q(ers)g(are)e(not)h(de\014ned.)37 +2434 y Fw(\(exact->inexact)22 b Fz(z)r Fw(\))1213 b FF(pro)q(cedure)37 +2490 y Fw(\(inexact->exact)22 b Fz(z)r Fw(\))1213 b FF(pro)q(cedure)37 +2547 y Fw(\(number->string)22 b FD(numb)n(er)5 b Fw(\))1085 +b FF(pro)q(cedure)37 2603 y Fw(\(number->string)22 b +FD(numb)n(er)i(r)n(adix)5 b Fw(\))963 b FF(pro)q(cedure)37 +2660 y Fw(\(string->number)22 b FD(string)t Fw(\))1118 +b FF(pro)q(cedure)37 2716 y Fw(\(string->number)22 b +FD(string)h(r)n(adix)5 b Fw(\))996 b FF(pro)q(cedure)37 +2796 y FD(Identic)n(al)15 b(to)i(R)311 2780 y FA(4)331 +2796 y FD(RS.)p eop %%Page: 17 17 -17 16 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(17)p 75 64 1763 2 v 75 179 a Fu(\(string>=?)20 b FB(string)419 -185 y Fy(1)459 179 y FB(string)563 185 y Fy(2)581 179 -y Fu(\))1056 b FD(pro)q(cedure)75 229 y Fu(\(string-ci?)19 b FB(string)462 284 y Fy(1)502 -278 y FB(string)606 284 y Fy(2)624 278 y Fu(\))1013 b -FD(pro)q(cedure)75 328 y Fu(\(string-ci<=?)19 b FB(string)484 -334 y Fy(1)524 328 y FB(string)628 334 y Fy(2)646 328 -y Fu(\))991 b FD(pro)q(cedure)75 378 y Fu(\(string-ci>=?)19 -b FB(string)484 384 y Fy(1)524 378 y FB(string)628 384 -y Fy(2)646 378 y Fu(\))991 b FD(pro)q(cedure)75 428 y -Fu(\(substring)20 b FB(string)h(start)g(end)t Fu(\))1025 -b FD(pro)q(cedure)75 478 y Fu(\(string-append)19 b FB(string)25 -b Fx(:)7 b(:)g(:)e Fu(\))1051 b FD(pro)q(cedure)75 527 -y Fu(\(string->list)19 b FB(string)t Fu(\))1149 b FD(pro)q(cedure)75 -577 y Fu(\(list->string)19 b FB(chars)s Fu(\))1158 b -FD(pro)q(cedure)75 627 y Fu(\(string-copy)19 b FB(string)t -Fu(\))1171 b FD(pro)q(cedure)75 677 y Fu(\(string-fill!)19 -b FB(string)i(char)t Fu(\))1049 b FD(pro)q(cedure)75 -750 y FB(Identic)n(al)15 b(to)g(R)325 735 y Fy(4)344 -750 y FB(RS.)75 855 y Fu(\(string-find?)k FB(string)484 -861 y Fy(1)524 855 y FB(string)628 861 y Fy(2)646 855 -y Fu(\))991 b FD(pro)q(cedure)75 929 y(Returns)15 b Fu(#t)e -FD(if)g FB(string)432 935 y Fy(1)464 929 y FD(app)q(ears)i(somewhere)f -(in)f FB(string)980 935 y Fy(2)999 929 y FD(;)g(otherwise)i(returns)g -Fu(#f)p FD(.)75 1034 y Fu(\(string-index)k FB(string)484 -1040 y Fy(1)524 1034 y FB(string)628 1040 y Fy(2)646 -1034 y Fu(\))991 b FD(pro)q(cedure)75 1103 y(Returns)15 -b(the)f(index)g(of)f(where)i FB(string)687 1109 y Fy(1)719 -1103 y FD(is)f(a)g(substring)g(of)f FB(string)1127 1109 -y Fy(2)1159 1103 y FD(if)g(it)h(exists;)g(returns)h Fu(#f)f -FD(otherwise.)153 1182 y Ft(\(string-ind)o(ex)i("ca")i("abracadab)o(ra) -o("\))350 1227 y Fs(=)-6 b Fn(\))19 b Ft(4)153 1273 y(\(string-ind)o -(ex)d("ba")i("abracadab)o(ra)o("\))350 1319 y Fs(=)-6 -b Fn(\))19 b Ft(#f)75 1502 y Fu(\(split-string)g FB(string)t -Fu(\))1149 b FD(pro)q(cedure)75 1552 y Fu(\(split-string)19 -b FB(string)i(delimiters)s Fu(\))950 b FD(pro)q(cedure)75 -1621 y(This)16 b(function)f(parses)i FB(string)567 1627 -y Fy(1)601 1621 y FD(and)f(returns)h(a)f(list)f(of)g(tok)o(ens)h(ended) -h(b)o(y)f(a)f(c)o(haracter)j(of)d(the)h FB(delimiters)1820 -1627 y Fy(1)75 1667 y FD(string.)30 b(If)17 b FB(delimiters)445 -1673 y Fy(1)480 1667 y FD(is)h(omitted,)f(it)g(defaults)h(to)g(a)g -(string)f(con)o(taining)g(a)h(space,)h(a)f(tabulation)e(and)i(a)75 -1712 y(newline)c(c)o(haracters.)153 1791 y Ft(\(split-stri)o(ng)i -("/usr/loca)o(l/)o(bin)o(")g("/"\))-138 b Fs(=)-6 b Fn(\))19 -b Ft(\("usr")e("local")g("bin"\))153 1837 y(\(split-stri)o(ng)f("once) -57 b(upon)18 b(a)h(time"\))-139 b Fs(=)-6 b Fn(\))19 -b Ft(\("once")e("upon")g("a")i("time"\))75 2020 y Fu(\(string-lower)g -FB(string)t Fu(\))1149 b FD(pro)q(cedure)75 2094 y(Returns)15 -b(a)f(string)g(in)g(whic)o(h)g(all)f(upp)q(er)i(case)g(letters)g(of)f -Fu(string)f FD(ha)o(v)o(e)h(b)q(een)h(replaced)g(b)o(y)f(their)h(lo)o -(w)o(er)e(case)75 2144 y(equiv)n(alen)o(t.)75 2249 y -Fu(\(string-upper)19 b FB(string)t Fu(\))1149 b FD(pro)q(cedure)75 -2322 y(Returns)15 b(a)f(string)g(in)g(whic)o(h)g(all)f(lo)o(w)o(er)h -(case)h(letters)g(of)f Fu(string)e FD(ha)o(v)o(e)i(b)q(een)i(replaced)f -(b)o(y)f(their)g(upp)q(er)h(case)75 2372 y(equiv)n(alen)o(t.)75 -2488 y FG(6.8)56 b(V)-5 b(ectors)75 2620 y Fu(\(vector?)20 -b FB(obj)6 b Fu(\))1307 b FD(pro)q(cedure)75 2669 y Fu(\(make-vector)19 -b FB(k)t Fu(\))1256 b FD(pro)q(cedure)75 2719 y Fu(\(make-vector)19 -b FB(k)j(\014l)r(l)t Fu(\))1187 b FD(pro)q(cedure)75 -2769 y Fu(\(vector)20 b FB(obj)i Fx(:)7 b(:)g(:)f Fu(\))1257 -b FD(pro)q(cedure)75 2819 y Fu(\(vector-length)19 b FB(ve)n(ctor)t -Fu(\))1123 b FD(pro)q(cedure)p eop +17 16 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(17)p 37 64 1838 2 v 341 146 1232 2 v 340 196 2 50 v +366 181 a Fn(name)p 487 196 V 50 w(value)p 629 196 V +50 w(alternate)15 b(name)p 951 196 V 960 196 V 58 w(name)p +1107 196 V 51 w(value)p 1249 196 V 50 w(alternate)f(name)p +1571 196 V 341 198 1232 2 v 340 248 2 50 v 386 233 a +Fu(n)o(ul)p 487 248 V 85 w(000)p 629 248 V 166 w(n)o(ull)p +951 248 V 960 248 V 188 w(bs)p 1107 248 V 95 w(010)p +1249 248 V 110 w(bac)o(kspace)p 1571 248 V 340 298 V +384 283 a(soh)p 487 298 V 84 w(001)p 629 298 V 951 298 +V 960 298 V 424 w(h)o(t)p 1107 298 V 95 w(011)p 1249 +298 V 170 w(tab)p 1571 298 V 340 347 V 387 332 a(stx)p +487 347 V 87 w(002)p 629 347 V 951 347 V 960 347 V 426 +w(nl)p 1107 347 V 96 w(012)p 1249 347 V 132 w(newline)p +1571 347 V 340 397 V 386 382 a(etx)p 487 397 V 86 w(003)p +629 397 V 951 397 V 960 397 V 424 w(vt)p 1107 397 V 95 +w(013)p 1249 397 V 1571 397 V 340 447 V 387 432 a(eot)p +487 447 V 86 w(004)p 629 447 V 951 447 V 960 447 V 420 +w(np)p 1107 447 V 91 w(014)p 1249 447 V 158 w(page)p +1571 447 V 340 497 V 383 482 a(enq)p 487 497 V 82 w(005)p +629 497 V 951 497 V 960 497 V 426 w(cr)p 1107 497 V 97 +w(015)p 1249 497 V 143 w(return)p 1571 497 V 340 547 +V 384 532 a(ac)o(k)p 487 547 V 84 w(006)p 629 547 V 951 +547 V 960 547 V 425 w(so)p 1107 547 V 95 w(016)p 1249 +547 V 1571 547 V 340 620 2 74 v 387 581 a(b)q(el)p 487 +620 V 87 w(007)p 629 620 V 167 w(b)q(ell)p 951 620 V +960 620 V 196 w(si)p 1107 620 V 100 w(017)p 1249 620 +V 1571 620 V 340 670 2 50 v 388 655 a(dle)p 487 670 V +87 w(020)p 629 670 V 951 670 V 960 670 V 412 w(can)p +1107 670 V 83 w(030)p 1249 670 V 1571 670 V 340 720 V +383 705 a(dc1)p 487 720 V 83 w(021)p 629 720 V 951 720 +V 960 720 V 417 w(em)p 1107 720 V 86 w(031)p 1249 720 +V 1571 720 V 340 769 V 383 755 a(dc2)p 487 769 V 83 w(022)p +629 769 V 951 769 V 960 769 V 412 w(sub)p 1107 769 V +83 w(032)p 1249 769 V 1571 769 V 340 819 V 383 804 a(dc3)p +487 819 V 83 w(023)p 629 819 V 951 819 V 960 819 V 416 +w(esc)p 1107 819 V 89 w(033)p 1249 819 V 142 w(escap)q(e)p +1571 819 V 340 869 V 383 854 a(dc4)p 487 869 V 83 w(024)p +629 869 V 951 869 V 960 869 V 429 w(fs)p 1107 869 V 99 +w(034)p 1249 869 V 1571 869 V 340 919 V 382 904 a(nak)p +487 919 V 80 w(025)p 629 919 V 951 919 V 960 919 V 425 +w(gs)p 1107 919 V 95 w(035)p 1249 919 V 1571 919 V 340 +969 V 384 954 a(syn)p 487 969 V 83 w(026)p 629 969 V +951 969 V 960 969 V 427 w(rs)p 1107 969 V 98 w(036)p +1249 969 V 1571 969 V 340 1042 2 74 v 386 1004 a(etb)p +487 1042 V 85 w(027)p 629 1042 V 951 1042 V 960 1042 +V 423 w(us)p 1107 1042 V 95 w(037)p 1249 1042 V 1571 +1042 V 340 1116 V 395 1077 a(sp)p 487 1116 V 94 w(040)p +629 1116 V 152 w(space)p 951 1116 V 960 1116 V 1107 1116 +V 1249 1116 V 1571 1116 V 340 1165 2 50 v 388 1150 a(del)p +487 1165 V 87 w(177)p 629 1165 V 147 w(delete)p 951 1165 +V 960 1165 V 1107 1165 V 1249 1165 V 1571 1165 V 341 +1167 1232 2 v 638 1294 a FF(T)l(able)i(1:)j(V)l(alid)e(c)o(haracter)e +(names)37 1447 y FI(6.6)56 b(Characters)37 1557 y FF(T)l(able)20 +b(1)e(giv)o(es)h(the)g(list)h(of)e(allo)o(w)o(ed)h(c)o(haracter)f +(names)h(together)f(with)h(their)g(ASCI)q(I)h(equiv)m(alen)o(t)h(ex-)37 +1613 y(pressed)16 b(in)g(o)q(ctal.)37 1771 y Fw(\(char?)24 +b FD(obj)7 b Fw(\))1385 b FF(pro)q(cedure)37 1828 y Fw(\(char=?)23 +b FD(char)314 1835 y FA(1)359 1828 y FD(char)445 1835 +y FA(2)465 1828 y Fw(\))1190 b FF(pro)q(cedure)37 1884 +y Fw(\(char?)23 b FD(char)314 1948 y FA(1)359 1941 +y FD(char)445 1948 y FA(2)465 1941 y Fw(\))1190 b FF(pro)q(cedure)37 +1997 y Fw(\(char<=?)23 b FD(char)338 2004 y FA(1)382 +1997 y FD(char)468 2004 y FA(2)489 1997 y Fw(\))1166 +b FF(pro)q(cedure)37 2053 y Fw(\(char>=?)23 b FD(char)338 +2060 y FA(1)382 2053 y FD(char)468 2060 y FA(2)489 2053 +y Fw(\))1166 b FF(pro)q(cedure)37 2110 y Fw(\(char-ci=?)23 +b FD(char)386 2117 y FA(1)430 2110 y FD(char)516 2117 +y FA(2)536 2110 y Fw(\))1119 b FF(pro)q(cedure)37 2166 +y Fw(\(char-ci?)23 b FD(char)386 2230 y FA(1)430 +2223 y FD(char)516 2230 y FA(2)536 2223 y Fw(\))1119 +b FF(pro)q(cedure)37 2279 y Fw(\(char-ci<=?)23 b FD(char)410 +2286 y FA(1)454 2279 y FD(char)540 2286 y FA(2)560 2279 +y Fw(\))1095 b FF(pro)q(cedure)37 2336 y Fw(\(char-ci>=?)23 +b FD(char)410 2343 y FA(1)454 2336 y FD(char)540 2343 +y FA(2)560 2336 y Fw(\))1095 b FF(pro)q(cedure)37 2392 +y Fw(\(char-alphabetic?)22 b FD(char)5 b Fw(\))1097 b +FF(pro)q(cedure)37 2449 y Fw(\(char-numeric?)22 b FD(char)5 +b Fw(\))1169 b FF(pro)q(cedure)37 2505 y Fw(\(char-whitespace?)22 +b FD(char)5 b Fw(\))1097 b FF(pro)q(cedure)37 2562 y +Fw(\(char-upper-case?)22 b FD(letter)5 b Fw(\))1080 b +FF(pro)q(cedure)37 2618 y Fw(\(char-lower-case?)22 b +FD(letter)5 b Fw(\))1080 b FF(pro)q(cedure)37 2674 y +Fw(\(char->integer)22 b FD(char)5 b Fw(\))1169 b FF(pro)q(cedure)37 +2731 y Fw(\(integer->char)22 b Fz(n)q Fw(\))1232 b FF(pro)q(cedure)37 +2787 y Fw(\(char-upcase)23 b FD(char)5 b Fw(\))1216 b +FF(pro)q(cedure)p eop %%Page: 18 18 -18 17 bop 75 47 a FC(18)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(\(vector-ref)20 b FB(ve)n(ctor)h(k)t -Fu(\))1148 b FD(pro)q(cedure)75 229 y Fu(\(vector-set!)19 -b FB(ve)n(ctor)j(k)g(obj)6 b Fu(\))1049 b FD(pro)q(cedure)75 -278 y Fu(\(vector->list)19 b FB(ve)n(ctor)t Fu(\))1145 -b FD(pro)q(cedure)75 328 y Fu(\(list->vector)19 b FB(list)t -Fu(\))1198 b FD(pro)q(cedure)75 378 y Fu(\(vector-fill!)19 -b FB(ve)n(ctor)j(\014l)r(l)t Fu(\))1076 b FD(pro)q(cedure)75 -451 y FB(Identic)n(al)15 b(to)g(R)325 436 y Fy(4)344 -451 y FB(RS.)75 542 y Fu(\(vector-copy)k FB(ve)n(ctor)t -Fu(\))1167 b FD(pro)q(cedure)75 616 y(returns)15 b(a)f(cop)o(y)g(of)f -FB(ve)n(ctor)t FD(.)75 706 y Fu(\(vector-resize)19 b -FB(ve)n(ctor)i(size)s Fu(\))1037 b FD(pro)q(cedure)75 -780 y FB(ve)n(ctor-r)n(esize)17 b FD(ph)o(ysically)d(c)o(hanges)h(the)h -(size)g(of)e FB(ve)n(ctor)t FD(.)21 b(If)15 b FB(size)j -FD(is)d(greater)h(than)f(the)g(old)g(v)o(ector)g(size,)h(the)75 -830 y(con)o(ten)o(ts)f(of)e(the)i(newly)f(allo)q(cated)f(cells)h(are)g -(unde\014ned.)75 932 y FG(6.9)56 b(Con)n(trol)19 b(features)75 -1061 y Fu(\(procedure?)h FB(obj)6 b Fu(\))1241 b FD(pro)q(cedure)75 -1111 y Fu(\(apply)21 b FB(pr)n(o)n(c)g(ar)n(gs)s Fu(\))1237 -b FD(pro)q(cedure)75 1161 y Fu(\(apply)21 b FB(pr)n(o)n(c)g(ar)n(g)380 -1167 y Fy(1)420 1161 y Fx(:)7 b(:)g(:)20 b FB(ar)n(gs)s -Fu(\))1071 b FD(pro)q(cedure)75 1210 y Fu(\(map)21 b -FB(pr)n(o)n(c)h(list)336 1216 y Fy(1)375 1210 y FB(list)430 -1216 y Fy(2)470 1210 y Fx(:)7 b(:)g(:)e Fu(\))1112 b -FD(pro)q(cedure)75 1260 y Fu(\(for-each)20 b FB(pr)n(o)n(c)i(list)445 -1266 y Fy(1)484 1260 y FB(list)539 1266 y Fy(2)579 1260 -y Fx(:)7 b(:)g(:)e Fu(\))1003 b FD(pro)q(cedure)75 1310 -y Fu(\(force)21 b FB(pr)n(omise)s Fu(\))1265 b FD(pro)q(cedure)75 -1384 y FB(Identic)n(al)15 b(to)g(R)325 1368 y Fy(4)344 -1384 y FB(RS.)75 1474 y Fu(\(call-with-curren)o(t-con)o(tinua)o(tion)j -FB(pr)n(o)n(c)r Fu(\))788 b FD(pro)q(cedure)75 1524 y -Fu(\(call/cc)20 b FB(pr)n(o)n(c)r Fu(\))1289 b FD(pro)q(cedure)75 -1597 y Fu(Call/cc)12 b FD(is)i(a)g(shorter)h(name)e(for)g -Fu(call-with-current-)o(conti)o(nuati)o(on)p FD(.)75 -1688 y Fu(\(closure?)20 b FB(obj)6 b Fu(\))1285 b FD(pro)q(cedure)75 -1762 y(returns)14 b Fu(#t)f FD(if)f FB(obj)18 b FD(is)13 -b(a)g(pro)q(cedure)h(created)h(b)o(y)d(ev)n(aluating)g(a)g(lam)o(b)q -(da)e(expression,)k(otherwise)g(returns)g Fu(#f)p FD(.)75 -1852 y Fu(\(primitive?)20 b FB(obj)6 b Fu(\))1241 b FD(pro)q(cedure)75 -1926 y(returns)15 b Fu(#t)f FD(if)f FB(obj)20 b FD(is)14 -b(a)f(pro)q(cedure)j(and)e(is)f(not)h(a)g(closure,)g(otherwise)h -(returns)g Fu(#f)p FD(.)75 2016 y Fu(\(promise?)20 b -FB(obj)6 b Fu(\))1285 b FD(pro)q(cedure)75 2090 y(returns)15 -b Fu(#t)f FD(if)f FB(obj)20 b FD(is)14 b(an)f(ob)r(ject)i(returned)g(b) -o(y)f(the)h(application)d(of)h Fu(delay)p FD(,)g(otherwise)i(returns)g -Fu(#f)p FD(.)75 2181 y Fu(\(continuation?)k FB(obj)6 -b Fu(\))1176 b FD(pro)q(cedure)75 2254 y(returns)15 b -Fu(#t)f FD(if)f FB(obj)20 b FD(is)14 b(a)f(con)o(tin)o(uation)g -(obtained)h(b)o(y)f Fu(call/cc)p FD(,)f(otherwise)j(returns)g -Fu(#f)p FD(.)75 2345 y Fu(\(dynamic-wind)k Fm(h)p FD(th)o(unk)502 -2351 y Fy(1)521 2345 y Fm(i)j(h)p FD(th)o(unk)681 2351 -y Fy(2)700 2345 y Fm(i)g(h)p FD(th)o(unk)860 2351 y Fy(3)879 -2345 y Fm(i)p Fu(\))742 b FD(pro)q(cedure)75 2418 y Fm(h)p -FD(Th)o(unk)211 2424 y Fy(1)230 2418 y Fm(i)p FD(,)17 -b Fm(h)p FD(th)o(unk)397 2424 y Fy(2)416 2418 y Fm(i)g -FD(and)g Fm(h)p FD(th)o(unk)655 2424 y Fy(3)674 2418 -y Fm(i)h FD(are)f(called)g(in)g(order.)28 b(The)18 b(result)g(of)f -Fu(dynamic-wind)d FD(is)j(the)h(v)n(alue)75 2468 y(returned)g(b)o(y)e -Fm(h)p FD(th)o(unk)428 2474 y Fy(2)447 2468 y Fm(i)p -FD(.)26 b(If)16 b Fm(h)p FD(th)o(unk)667 2474 y Fy(2)685 -2468 y Fm(i)h FD(escap)q(es)h(from)d(its)h(con)o(tin)o(uation)g(during) -g(ev)n(aluation)f(\(b)o(y)h(calling)f(a)75 2518 y(con)o(tin)o(uation)f -(obtained)g(b)o(y)h Fu(call/cc)e FD(or)i(on)f(error\),)i -Fm(h)p FD(th)o(unk)1076 2524 y Fy(3)1094 2518 y Fm(i)f -FD(is)g(called.)20 b(If)14 b Fm(h)p FD(th)o(unk)1468 -2524 y Fy(2)1487 2518 y Fm(i)h FD(is)g(later)g(reen)o(tered,)75 -2568 y Fm(h)p FD(th)o(unk)197 2574 y Fy(1)216 2568 y -Fm(i)f FD(is)g(called.)75 2658 y Fu(\(catch)21 b Fm(h)p -FD(expression)429 2664 y Fy(1)449 2658 y Fm(i)g(h)p FD(expression)687 -2664 y Fy(2)707 2658 y Fm(i)h Fx(:)7 b(:)g(:)f Fu(\))896 -b FD(syn)o(tax)75 2728 y(The)10 b Fm(h)p FD(expression)p -Fm(i)r FD(s)g(are)g(ev)n(aluated)f(from)f(left)i(to)f(righ)o(t.)17 -b(If)9 b(an)h(error)g(o)q(ccurs,)i(ev)n(aluation)c(of)h(the)i -Fm(h)p FD(expression)p Fm(i)q FD(s)75 2773 y(is)17 b(ab)q(orted,)h(and) -f Fu(#t)g FD(is)g(returned)i(to)e Fu(catch)p FD('s)f(caller.)28 -b(If)16 b(ev)n(aluation)g(\014nishes)i(without)f(an)g(error,)i -Fu(catch)75 2819 y FD(returns)c Fu(#f)p FD(.)p eop +18 17 bop 37 45 a FE(18)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 360 146 1192 2 v 359 196 2 50 v 414 181 +a Fn(Se)n(quenc)n(e)p 627 196 V 627 196 V 350 w(Char)n(acter)d(inserte) +n(d)p 1551 196 V 360 198 1192 2 v 359 248 2 50 v 385 +233 a Fv(\\)p Fu(b)p 627 248 V 223 w(Bac)o(kspace)p 1551 +248 V 359 298 V 385 283 a Fv(\\)p Fu(e)p 627 298 V 228 +w(Escap)q(e)p 1551 298 V 359 347 V 385 332 a Fv(\\)p +Fu(n)p 627 347 V 223 w(Newline)p 1551 347 V 359 397 V +385 382 a Fv(\\)p Fu(t)p 627 397 V 230 w(Horizon)o(tal)f(T)m(ab)p +1551 397 V 359 447 V 385 432 a Fv(\\)p Fu(n)p 627 447 +V 223 w(Carriage)h(Return)p 1551 447 V 359 497 V 385 +482 a Fv(\\)p Fu(0ab)q(c)p 627 497 V 162 w(ASCI)q(I)g(c)o(haracter)h +(with)f(o)q(ctal)g(v)n(alue)f(ab)q(c)p 1551 497 V 359 +547 V 385 532 a Fv(\\)p 627 547 V 48 w Fu(None)h(\(p)q(ermits) +g(to)g(en)o(ter)h(a)e(string)h(on)g(sev)o(eral)g(lines\))p +1551 547 V 359 596 V 385 581 a Fv(\\)p 627 596 +V 92 w()p 1551 596 V 360 598 1192 2 v 631 725 +a FF(T)l(able)i(2:)j(String)d(escap)q(e)g(sequences)37 +865 y Fw(\(char-downcase)22 b FD(char)5 b Fw(\))1169 +b FF(pro)q(cedure)37 946 y FD(Identic)n(al)15 b(to)i(R)311 +929 y FA(4)331 946 y FD(RS.)37 1077 y FI(6.7)56 b(Strings)37 +1165 y FB(STk)15 b FF(string)g(constan)o(ts)g(allo)o(w)g(the)h +(insertion)g(of)f(arbitrary)g(c)o(haracters)f(b)o(y)h(enco)q(ding)i +(them)e(as)g(escap)q(e)37 1222 y(sequences,)j(in)o(tro)q(duced)f(b)o(y) +f(a)g(bac)o(kslash)h(\()p Fw(\\)p FF(\).)k(The)c(v)m(alid)h(escap)q(e)f +(sequences)g(are)f(sho)o(wn)g(in)h(T)l(able)g(2.)37 1278 +y(F)l(or)e(instance,)h(the)f(string)125 1384 y Fv("ab\\040c\\nd\\)125 +1433 y(e")37 1594 y FF(is)h(the)f(string)h(consisting)g(of)f(the)g(c)o +(haracters)f Fw(#\\)p FF(a,)g Fw(#\\)p FF(b,)p Fw(#\\)p +FF(space,)h Fw(#\\)p FF(c,)g Fw(#\\)p FF(newline,)h Fw(#\\)p +FF(d)f(and)h Fw(#\\)p FF(e.)37 1715 y Fw(\(string?)23 +b FD(obj)7 b Fw(\))1338 b FF(pro)q(cedure)37 1771 y Fw(\(make-string)23 +b Fz(k)q Fw(\))1282 b FF(pro)q(cedure)37 1828 y Fw(\(make-string)23 +b Fz(k)i FD(char)5 b Fw(\))1167 b FF(pro)q(cedure)37 +1884 y Fw(\(string)23 b FD(char)i Fz(:)8 b(:)g(:)d Fw(\))1256 +b FF(pro)q(cedure)37 1941 y Fw(\(string-length)22 b FD(string)t +Fw(\))1142 b FF(pro)q(cedure)37 1997 y Fw(\(string-ref)23 +b FD(string)g Fz(k)q Fw(\))1169 b FF(pro)q(cedure)37 +2053 y Fw(\(string-set!)23 b FD(string)g(k)h(char)5 b +Fw(\))1034 b FF(pro)q(cedure)37 2110 y Fw(\(string=?)23 +b FD(string)390 2117 y FA(1)433 2110 y FD(string)547 +2117 y FA(2)566 2110 y Fw(\))1089 b FF(pro)q(cedure)37 +2166 y Fw(\(string-ci=?)23 b FD(string)462 2173 y FA(1)505 +2166 y FD(string)619 2173 y FA(2)638 2166 y Fw(\))1017 +b FF(pro)q(cedure)37 2223 y Fw(\(string?)23 +b FD(string)390 2286 y FA(1)433 2279 y FD(string)547 +2286 y FA(2)566 2279 y Fw(\))1089 b FF(pro)q(cedure)37 +2336 y Fw(\(string<=?)23 b FD(string)414 2343 y FA(1)457 +2336 y FD(string)571 2343 y FA(2)590 2336 y Fw(\))1065 +b FF(pro)q(cedure)37 2392 y Fw(\(string>=?)23 b FD(string)414 +2399 y FA(1)457 2392 y FD(string)571 2399 y FA(2)590 +2392 y Fw(\))1065 b FF(pro)q(cedure)37 2449 y Fw(\(string-ci?)23 b FD(string)462 2512 y FA(1)505 +2505 y FD(string)619 2512 y FA(2)638 2505 y Fw(\))1017 +b FF(pro)q(cedure)37 2562 y Fw(\(string-ci<=?)23 b FD(string)486 +2569 y FA(1)528 2562 y FD(string)642 2569 y FA(2)661 +2562 y Fw(\))994 b FF(pro)q(cedure)37 2618 y Fw(\(string-ci>=?)23 +b FD(string)486 2625 y FA(1)528 2618 y FD(string)642 +2625 y FA(2)661 2618 y Fw(\))994 b FF(pro)q(cedure)37 +2674 y Fw(\(substring)23 b FD(string)g(start)h(end)5 +b Fw(\))1028 b FF(pro)q(cedure)37 2731 y Fw(\(string-append)22 +b FD(string)28 b Fz(:)8 b(:)g(:)d Fw(\))1058 b FF(pro)q(cedure)37 +2787 y Fw(\(string->list)23 b FD(string)t Fw(\))1165 +b FF(pro)q(cedure)p eop %%Page: 19 19 -19 18 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(19)p 75 64 1763 2 v 153 179 a Ft(\(let*)18 b(\(\(x)h(0\))291 -224 y(\(y)g(\(catch)408 270 y(\(set!)f(x)h(1\))408 316 -y(\(/)g(0\))g(;)g(causes)f(a)h("division)d(by)j(0")g(error)408 -361 y(\(set!)f(x)h(2\)\)\)\))193 407 y(\(cons)e(x)j(y\)\))350 -453 y Fs(=)-6 b Fn(\))19 b Ft(\(1)g(.)g(#t\))75 641 y -Fu(\(procedure-body)g Fm(h)p FD(pro)q(cedure)p Fm(i)r -Fu(\))1002 b FD(pro)q(cedure)75 711 y(returns)15 b(the)f(b)q(o)q(dy)g -(of)f Fm(h)p FD(pro)q(cedure)p Fm(i)r FD(.)18 b(If)13 -b Fm(h)p FD(pro)q(cedure)p Fm(i)j FD(is)d(not)h(a)f(closure,)h -Fu(procedure-body)d FD(returns)k Fu(#f)p FD(.)153 791 -y Ft(\(define)i(\(f)i(a)g(b\))212 837 y(\(+)g(a)g(\(*)g(b)g(2\)\)\))153 -928 y(\(procedure-)o(bo)o(dy)d(f\))196 b Fs(=)-6 b Fn(\))19 -b Ft(\(lambda)e(\(a)i(b\))820 974 y(\(+)g(a)g(\(*)g(b)g(2\)\)\))153 -1020 y(\(procedure-)o(bo)o(dy)d(car\))156 b Fs(=)-6 b -Fn(\))19 b Ft(#f)75 1220 y FG(6.10)56 b(Input)18 b(and)i(output)75 -1297 y FD(The)d FB(R)193 1282 y Fy(4)205 1297 y Fx(RS)i -FD(states)e(that)g(p)q(orts)g(represen)o(t)h(input)e(and)h(output)f -(devices.)27 b(Ho)o(w)o(ev)o(er,)17 b(it)e(de\014nes)j(only)e(p)q(orts) -75 1347 y(whic)o(h)10 b(are)h(attac)o(hed)h(to)e(\014les.)17 -b(In)11 b Fz(STk)p FD(,)g(p)q(orts)g(can)g(also)f(b)q(e)h(attac)o(hed)g -(to)g(strings)g(or)f(to)h(a)f(external)h(command)75 1397 -y(input)16 b(or)g(output.)26 b(String)16 b(p)q(orts)h(are)f(similar)e -(to)i(\014le)g(p)q(orts,)h(except)h(that)e(c)o(haracters)i(are)f(read)g -(from)d(\(or)75 1447 y(written)g(to\))f(a)g(string)h(rather)g(than)f(a) -h(\014le.)j(External)d(command)d(input)i(or)g(output)h(p)q(orts)g(are)g -(implem)o(en)o(ted)75 1496 y(with)g(Unix)h(pip)q(es)g(and)f(are)h -(called)g(pip)q(e)f(p)q(orts.)21 b(A)15 b(pip)q(e)g(p)q(ort)g(is)f -(created)j(b)o(y)d(sp)q(ecifying)h(the)g(command)d(to)75 -1546 y(execute)19 b(pre\014xed)f(with)f(the)h(string)f -Fu("|)22 b(")p FD(.)27 b(Sp)q(eci\014cation)18 b(of)e(a)h(pip)q(e)g(p)q -(ort)h(can)f(o)q(ccur)h(ev)o(erywhere)i(a)c(\014le)75 -1596 y(name)d(is)g(needed.)75 1703 y Fu(\(call-with-input-)o(file)18 -b FB(string)k(pr)n(o)n(c)r Fu(\))880 b FD(pro)q(cedure)75 -1752 y Fu(\(call-with-output)o(-file)18 b FB(string)j(pr)n(o)n(c)r -Fu(\))859 b FD(pro)q(cedure)75 1826 y Fl(Note:)35 b Fs(if)14 -b Fl(s)s Fs(tring)h(starts)e(with)i(the)f(t)o(w)o(o)f(c)o(haracters)h -Ft("|)19 b(")p Fs(,)13 b(these)h(pro)q(cedures)h(return)g(a)e(pip)q(e)i -(p)q(ort.)20 b(Consequen)o(tly)m(,)75 1876 y(it)13 b(is)h(not)f(p)q -(ossible)j(to)d(op)q(en)g(a)g(\014le)h(whose)g(name)f(starts)g(with)h -(those)f(t)o(w)o(o)g(c)o(haracters.)75 1985 y Fu(\(call-with-input-)o -(strin)o(g)19 b FB(string)i(pr)n(o)n(c)r Fu(\))837 b -FD(pro)q(cedure)75 2058 y(b)q(eha)o(v)o(es)15 b(exactly)f(as)f -Fu(call-with-input-file)d FD(except)15 b(that)f(the)h(p)q(ort)f(passed) -h(to)e FB(pr)n(o)n(c)j FD(is)e(the)g(string)g(p)q(ort)75 -2108 y(obtained)g(from)e FB(string)s FD(.)153 2198 y -Ft(\(call-with-)o(in)o(put)o(-st)o(ri)o(ng)k("123)i(456")g(\(lambda)f -(\(x\))i(\(read)e(x\)\)\))350 2243 y Fs(=)-6 b Fn(\))19 -b Ft(123)75 2440 y Fu(\(call-with-output)o(-stri)o(ng)g -FB(pr)n(o)n(c)r Fu(\))940 b FD(pro)q(cedure)75 2510 y -FB(Pr)n(o)n(c)14 b FD(should)e(b)q(e)g(a)g(pro)q(cedure)i(of)d(one)h -(argumen)o(t.)k Fu(Call-with-output-st)o(ring)8 b FD(calls)k -FB(pr)n(o)n(c)i FD(with)e(a)f(freshly)75 2556 y(op)q(ened)i(output)g -(string)f(p)q(ort.)18 b(The)13 b(result)g(of)f(this)g(pro)q(cedure)j -(is)d(a)g(string)g(con)o(taining)g(all)f(the)i(text)g(that)f(has)75 -2601 y(b)q(een)j(written)f(on)g(the)h(string)f(p)q(ort.)153 -2682 y Ft(\(call-with-)o(ou)o(tpu)o(t-s)o(tr)o(ing)212 -2728 y(\(lambda)j(\(x\))i(\(write)e(123)h(x\))h(\(display)e("Hello")g -(x\)\)\))350 2773 y Fs(=)-6 b Fn(\))19 b Ft("123Hello")p -eop +19 18 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(19)p 37 64 1838 2 v 37 190 a Fw(\(list->string)23 b +FD(chars)t Fw(\))1174 b FF(pro)q(cedure)37 247 y Fw(\(string-copy)23 +b FD(string)t Fw(\))1189 b FF(pro)q(cedure)37 303 y Fw(\(string-fill!) +23 b FD(string)g(char)5 b Fw(\))1055 b FF(pro)q(cedure)37 +384 y FD(Identic)n(al)15 b(to)i(R)311 367 y FA(4)331 +384 y FD(RS.)37 501 y Fw(\(string-find?)23 b FD(string)486 +508 y FA(1)528 501 y FD(string)642 508 y FA(2)661 501 +y Fw(\))994 b FF(pro)q(cedure)37 582 y(Returns)16 b Fw(#t)f +FF(if)h FD(string)429 589 y FA(1)463 582 y FF(app)q(ears)f(somewhere)g +(in)h FD(string)1028 589 y FA(2)1047 582 y FF(;)f(otherwise)h(returns)f +Fw(#f)p FF(.)37 699 y Fw(\(string-index)23 b FD(string)486 +706 y FA(1)528 699 y FD(string)642 706 y FA(2)661 699 +y Fw(\))994 b FF(pro)q(cedure)37 773 y(Returns)12 b(the)f(index)h(of)e +(where)h FD(string)686 780 y FA(1)716 773 y FF(is)g(a)g(substring)g(of) +g FD(string)1146 780 y FA(2)1175 773 y FF(if)h(it)f(exists;)h(returns)f +Fw(#f)f FF(otherwise.)125 861 y Fv(\(string-index)19 +b("ca")i("abracadabra"\))343 910 y Fu(=)-7 b Fp(\))21 +b Fv(4)125 960 y(\(string-index)e("ba")i("abracadabra"\))343 +1010 y Fu(=)-7 b Fp(\))21 b Fv(#f)37 1215 y Fw(\(split-string)i +FD(string)t Fw(\))1165 b FF(pro)q(cedure)37 1272 y Fw(\(split-string)23 +b FD(string)g(delimiters)t Fw(\))947 b FF(pro)q(cedure)37 +1345 y(This)13 b(function)f(parses)g FD(string)560 1352 +y FA(1)590 1345 y FF(and)g(returns)f(a)h(list)g(of)f(tok)o(ens)g(ended) +i(b)o(y)f(a)f(c)o(haracter)g(of)g(the)h FD(delimiters)1856 +1352 y FA(1)37 1395 y FF(string.)20 b(If)15 b FD(delimiters)424 +1402 y FA(1)457 1395 y FF(is)g(omitted,)f(it)h(defaults)g(to)f(a)g +(string)g(con)o(taining)h(a)f(space,)h(a)f(tabulation)h(and)f(a)37 +1445 y(newline)k(c)o(haracters.)125 1533 y Fv(\(split-string)h +("/usr/local/bin")f("/"\))-153 b Fu(=)-7 b Fp(\))22 b +Fv(\("usr")e("local")g("bin"\))125 1583 y(\(split-string)f("once)64 +b(upon)21 b(a)h(time"\))-154 b Fu(=)-7 b Fp(\))22 b Fv(\("once")e +("upon")g("a")i("time"\))37 1788 y Fw(\(string-lower)h +FD(string)t Fw(\))1165 b FF(pro)q(cedure)37 1868 y(Returns)17 +b(a)e(string)h(in)g(whic)o(h)h(all)g(upp)q(er)f(case)g(letters)g(of)f +Fw(string)g FF(ha)o(v)o(e)h(b)q(een)g(replaced)h(b)o(y)f(their)g(lo)o +(w)o(er)37 1924 y(case)g(equiv)m(alen)o(t.)37 2042 y +Fw(\(string-upper)23 b FD(string)t Fw(\))1165 b FF(pro)q(cedure)37 +2123 y(Returns)17 b(a)e(string)h(in)g(whic)o(h)h(all)g(lo)o(w)o(er)e +(case)h(letters)g(of)f Fw(string)g FF(ha)o(v)o(e)g(b)q(een)i(replaced)g +(b)o(y)f(their)g(upp)q(er)37 2179 y(case)g(equiv)m(alen)o(t.)37 +2302 y FI(6.8)56 b(V)-5 b(ectors)37 2449 y Fw(\(vector?)23 +b FD(obj)7 b Fw(\))1338 b FF(pro)q(cedure)37 2505 y Fw(\(make-vector)23 +b FD(k)5 b Fw(\))1281 b FF(pro)q(cedure)37 2562 y Fw(\(make-vector)23 +b FD(k)g(\014l)r(l)5 b Fw(\))1206 b FF(pro)q(cedure)37 +2618 y Fw(\(vector)23 b FD(obj)h Fz(:)8 b(:)g(:)e Fw(\))1284 +b FF(pro)q(cedure)37 2674 y Fw(\(vector-length)22 b FD(ve)n(ctor)5 +b Fw(\))1137 b FF(pro)q(cedure)37 2731 y Fw(\(vector-ref)23 +b FD(ve)n(ctor)h(k)5 b Fw(\))1163 b FF(pro)q(cedure)37 +2787 y Fw(\(vector-set!)23 b FD(ve)n(ctor)g(k)h(obj)7 +b Fw(\))1056 b FF(pro)q(cedure)p eop %%Page: 20 20 -20 19 bop 75 47 a FC(20)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(\(input-port?)19 b FB(obj)6 -b Fu(\))1220 b FD(pro)q(cedure)75 229 y Fu(\(output-port?)19 -b FB(obj)6 b Fu(\))1198 b FD(pro)q(cedure)75 302 y FB(Identic)n(al)15 -b(to)g(R)325 287 y Fy(4)344 302 y FB(RS.)75 406 y Fu -(\(input-string-por)o(t?)k FB(obj)6 b Fu(\))1067 b FD(pro)q(cedure)75 -456 y Fu(\(output-string-po)o(rt?)19 b FB(obj)6 b Fu(\))1045 -b FD(pro)q(cedure)75 529 y(Returns)15 b Fu(#t)e FD(if)g -FB(obj)20 b FD(is)14 b(either)h(an)e(input)h(or)g(an)f(output)h(string) -g(p)q(ort,)g(otherwise)h(returns)g Fu(#f)p FD(.)75 633 -y Fu(\(current-input-po)o(rt)m(\))1148 b FD(pro)q(cedure)75 -683 y Fu(\(current-output-p)o(ort)m(\))1126 b FD(pro)q(cedure)75 -756 y FB(Identic)n(al)15 b(to)g(R)325 741 y Fy(4)344 -756 y FB(RS.)75 860 y Fu(\(current-error-po)o(rt)m(\))1148 -b FD(pro)q(cedure)75 933 y(Returns)15 b(the)f(curren)o(t)i(default)d -(error)i(p)q(ort.)75 1037 y Fu(\(with-input-from-)o(file)j -FB(string)k(thunk)t Fu(\))854 b FD(pro)q(cedure)75 1087 -y Fu(\(with-output-to-f)o(ile)19 b FB(string)i(thunk)t -Fu(\))876 b FD(pro)q(cedure)75 1160 y FB(Identic)n(al)15 -b(to)g(R)325 1145 y Fy(4)344 1160 y FB(RS.)75 1210 y -FD(The)10 b(follo)o(wing)e(example)g(uses)j(a)f(pip)q(e)g(p)q(ort)g(op) -q(ened)h(for)e(reading.)17 b(It)10 b(p)q(ermits)f(to)h(read)g(all)f -(the)h(lines)g(pro)q(duced)75 1260 y(b)o(y)15 b(an)g(external)g -Fu(ls)g FD(command)d(\(i.e.)21 b(the)16 b(ouput)f(of)g(the)g -Fu(ls)g FD(command)d(is)j FB(r)n(e)n(dir)n(e)n(cte)n(d)f -FD(to)h(the)g(Sc)o(heme)g(pip)q(e)75 1310 y(p)q(ort\).)153 -1395 y Ft(\(with-input)o(-f)o(rom)o(-fi)o(le)h("|)j(ls)g(-ls")193 -1441 y(\(lambda)e(\(\))232 1487 y(\(do)h(\(\(l)h(\(read-lin)o(e\))d -(\(read-line)o(\)\)\))310 1532 y(\(\(eof-objec)o(t?)g(l\)\))271 -1578 y(\(display)h(l\))271 1624 y(\(newline\)\))o(\)\))75 -1755 y FD(Hereafter)e(is)e(another)g(example)f(of)g(Unix)h(command)d -(redirection.)19 b(This)13 b(time,)e(it)i(is)g(the)h(standard)f(input)g -(of)75 1801 y(the)h(Unix)g(command)d(whic)o(h)j(is)g(redirected.)153 -1879 y Ft(\(with-outpu)o(t-)o(to-)o(fil)o(e)i("|)j(mail)f(root")193 -1924 y(\(lambda\(\))232 1970 y(\(format)f(#t)i("A)g(simple)e(mail)h -(sent)g(from)g(STk\\n"\)\)\))75 2152 y Fu(\(with-input-from-)o(strin)o -(g)h FB(string)i(thunk)t Fu(\))811 b FD(pro)q(cedure)75 -2225 y(A)12 b(string)f(p)q(ort)h(is)g(op)q(ened)g(for)g(input)f(from)f -FB(string)s FD(.)17 b Fu(Current-input-port)8 b FD(is)j(set)i(to)e(the) -i(p)q(ort)e(and)h FB(thunk)17 b FD(is)75 2275 y(called.)f(When)10 -b FB(thunk)15 b FD(returns,)c(the)g(previous)f(default)f(input)g(p)q -(ort)h(is)g(restored.)18 b Fu(With-input-from-st)o(ring)75 -2325 y FD(returns)d(the)g(v)n(alue)e(yielded)h(b)o(y)g -FB(thunk)5 b FD(.)153 2411 y Ft(\(with-input)o(-f)o(rom)o(-st)o(ri)o -(ng)16 b("123)i(456")g(\(lambda)f(\(\))i(\(read\)\)\))350 -2456 y Fs(=)-6 b Fn(\))19 b Ft(123)75 2646 y Fu(\(with-output-to-s)o -(tring)f FB(thunk)t Fu(\))958 b FD(pro)q(cedure)75 2719 -y(A)14 b(string)g(p)q(ort)g(is)g(op)q(ened)h(for)f(output.)k -Fu(Current-output-po)o(rt)11 b FD(is)j(set)g(to)g(it)g(and)g -FB(thunk)19 b FD(is)13 b(called.)18 b(When)75 2769 y(the)c -FB(thunk)19 b FD(returns,)14 b(the)g(previous)g(default)f(output)h(p)q -(ort)g(is)f(restored.)20 b Fu(With-output-to-s)o(tring)10 -b FD(returns)75 2819 y(the)k(string)g(con)o(taining)f(all)g(the)h(text) -h(written)f(on)g(the)g(string)g(p)q(ort.)p eop +20 19 bop 37 45 a FE(20)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a Fw(\(vector->list)23 b FD(ve)n(ctor)5 +b Fw(\))1160 b FF(pro)q(cedure)37 247 y Fw(\(list->vector)23 +b FD(list)t Fw(\))1219 b FF(pro)q(cedure)37 303 y Fw(\(vector-fill!)23 +b FD(ve)n(ctor)g(\014l)r(l)5 b Fw(\))1085 b FF(pro)q(cedure)37 +383 y FD(Identic)n(al)15 b(to)i(R)311 367 y FA(4)331 +383 y FD(RS.)37 497 y Fw(\(vector-copy)23 b FD(ve)n(ctor)5 +b Fw(\))1184 b FF(pro)q(cedure)37 577 y(returns)16 b(a)e(cop)o(y)i(of)e +FD(ve)n(ctor)5 b FF(.)37 691 y Fw(\(vector-resize)22 +b FD(ve)n(ctor)i(size)s Fw(\))1042 b FF(pro)q(cedure)37 +771 y FD(ve)n(ctor-r)n(esize)18 b FF(ph)o(ysically)g(c)o(hanges)e(the)f +(size)i(of)e FD(ve)n(ctor)5 b FF(.)21 b(If)16 b FD(size)i +FF(is)e(greater)f(than)h(the)f(old)h(v)o(ector)f(size,)37 +828 y(the)h(con)o(ten)o(ts)e(of)h(the)g(newly)h(allo)q(cated)h(cells)f +(are)f(unde\014ned.)37 946 y FI(6.9)56 b(Con)n(trol)19 +b(features)37 1092 y Fw(\(procedure?)k FD(obj)7 b Fw(\))1266 +b FF(pro)q(cedure)37 1149 y Fw(\(apply)24 b FD(pr)n(o)n(c)f(ar)n(gs)t +Fw(\))1261 b FF(pro)q(cedure)37 1205 y Fw(\(apply)24 +b FD(pr)n(o)n(c)f(ar)n(g)371 1212 y FA(1)415 1205 y Fz(:)8 +b(:)g(:)22 b FD(ar)n(gs)t Fw(\))1079 b FF(pro)q(cedure)37 +1261 y Fw(\(map)24 b FD(pr)n(o)n(c)g(list)323 1268 y +FA(1)365 1261 y FD(list)425 1268 y FA(2)468 1261 y Fz(:)8 +b(:)g(:)e Fw(\))1126 b FF(pro)q(cedure)37 1318 y Fw(\(for-each)23 +b FD(pr)n(o)n(c)h(list)442 1325 y FA(1)485 1318 y FD(list)545 +1325 y FA(2)588 1318 y Fz(:)8 b(:)g(:)d Fw(\))1007 b +FF(pro)q(cedure)37 1374 y Fw(\(force)24 b FD(pr)n(omise)s +Fw(\))1293 b FF(pro)q(cedure)37 1454 y FD(Identic)n(al)15 +b(to)i(R)311 1438 y FA(4)331 1454 y FD(RS.)37 1568 y +Fw(\(call-with-current-continuatio)o(n)k FD(pr)n(o)n(c)s +Fw(\))769 b FF(pro)q(cedure)37 1625 y Fw(\(call/cc)23 +b FD(pr)n(o)n(c)s Fw(\))1318 b FF(pro)q(cedure)37 1705 +y Fw(Call/cc)15 b FF(is)g(a)g(shorter)g(name)g(for)g +Fw(call-with-current-conti)o(nuation)p FF(.)37 1819 y +Fw(\(closure?)23 b FD(obj)7 b Fw(\))1314 b FF(pro)q(cedure)37 +1899 y(returns)14 b Fw(#t)g FF(if)h FD(obj)21 b FF(is)14 +b(a)g(pro)q(cedure)h(created)f(b)o(y)g(ev)m(aluating)i(a)d(lam)o(b)q +(da)i(expression,)g(otherwise)f(returns)37 1955 y Fw(#f)p +FF(.)37 2069 y Fw(\(primitive?)23 b FD(obj)7 b Fw(\))1266 +b FF(pro)q(cedure)37 2149 y(returns)16 b Fw(#t)e FF(if)i +FD(obj)22 b FF(is)16 b(a)f(pro)q(cedure)h(and)f(is)h(not)f(a)f +(closure,)i(otherwise)f(returns)g Fw(#f)p FF(.)37 2263 +y Fw(\(promise?)23 b FD(obj)7 b Fw(\))1314 b FF(pro)q(cedure)37 +2343 y(returns)16 b Fw(#t)e FF(if)i FD(obj)22 b FF(is)16 +b(an)f(ob)s(ject)f(returned)i(b)o(y)f(the)g(application)i(of)e +Fw(delay)p FF(,)f(otherwise)i(returns)f Fw(#f)p FF(.)37 +2457 y Fw(\(continuation?)22 b FD(obj)7 b Fw(\))1195 +b FF(pro)q(cedure)37 2537 y(returns)16 b Fw(#t)e FF(if)i +FD(obj)22 b FF(is)16 b(a)f(con)o(tin)o(uation)g(obtained)h(b)o(y)f +Fw(call/cc)p FF(,)f(otherwise)h(returns)g Fw(#f)p FF(.)37 +2651 y Fw(\(dynamic-wind)23 b Fo(h)p FF(th)o(unk)506 +2658 y FA(1)525 2651 y Fo(i)h(h)p FF(th)o(unk)701 2658 +y FA(2)720 2651 y Fo(i)g(h)p FF(th)o(unk)896 2658 y FA(3)915 +2651 y Fo(i)p Fw(\))722 b FF(pro)q(cedure)37 2731 y Fo(h)p +FF(Th)o(unk)186 2738 y FA(1)206 2731 y Fo(i)p FF(,)22 +b Fo(h)p FF(th)o(unk)393 2738 y FA(2)412 2731 y Fo(i)f +FF(and)g Fo(h)p FF(th)o(unk)679 2738 y FA(3)698 2731 +y Fo(i)g FF(are)f(called)j(in)e(order.)37 b(The)21 b(result)g(of)f +Fw(dynamic-wind)g FF(is)h(the)37 2787 y(v)m(alue)d(returned)f(b)o(y)f +Fo(h)p FF(th)o(unk)540 2794 y FA(2)559 2787 y Fo(i)p +FF(.)23 b(If)16 b Fo(h)p FF(th)o(unk)793 2794 y FA(2)813 +2787 y Fo(i)g FF(escap)q(es)g(from)g(its)g(con)o(tin)o(uation)h(during) +g(ev)m(aluation)g(\(b)o(y)p eop %%Page: 21 21 -21 20 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(21)p 75 64 1763 2 v 153 179 a Ft(\(with-outpu)o(t-)o(to-)o(str)o(in)o -(g)17 b(\(lambda)f(\(\))j(\(write)f(123\))g(\(write)f("Hello"\)\)\))350 -224 y Fs(=)-6 b Fn(\))19 b Ft("123Hello")75 410 y Fu(\(open-input-file) -f FB(\014lename)s Fu(\))1039 b FD(pro)q(cedure)75 460 -y Fu(\(open-output-file)18 b FB(\014lename)s Fu(\))1017 -b FD(pro)q(cedure)75 534 y FB(Identic)n(al)15 b(to)g(R)325 -518 y Fy(4)344 534 y FB(RS.)75 583 y Fl(Note:)31 b Fs(if)12 -b Fl(f)c Fs(ilename)14 b(starts)e(with)g(the)g(string)h -Ft("|)19 b(")p Fs(,)11 b(these)i(pro)q(cedure)g(return)f(a)g(pip)q(e)i -(p)q(ort.)i(Consequen)o(tly)m(,)e(it)f(is)f(not)75 633 -y(p)q(ossible)j(to)e(op)q(en)h(a)f(\014le)h(whose)f(name)h(starts)f -(with)g(those)h(t)o(w)o(o)e(c)o(haracters.)75 735 y Fu -(\(open-input-strin)o(g)19 b FB(string)t Fu(\))1040 b -FD(pro)q(cedure)75 808 y(Returns)15 b(an)e(input)h(string)g(p)q(ort)g -(capable)g(of)f(deliv)o(ering)h(c)o(haracters)h(from)d -FB(string)t FD(.)75 910 y Fu(\(open-output-stri)o(ng)m(\))1148 -b FD(pro)q(cedure)75 984 y(Returns)15 b(an)e(output)h(string)g(p)q(ort) -h(capable)f(of)f(receiving)h(and)g(collecting)f(c)o(haracters.)75 -1085 y Fu(\(get-output-strin)o(g)19 b FB(p)n(ort)t Fu(\))1072 -b FD(pro)q(cedure)75 1155 y(Returns)15 b(a)e(string)h(con)o(taining)f -(all)g(the)h(text)h(that)f(has)g(b)q(een)h(written)f(on)g(the)g(output) -g(string)g FB(p)n(ort)t FD(.)153 1231 y Ft(\(let)19 b(\(\(p)f -(\(open-outp)o(ut)o(-st)o(ri)o(ng\))o(\)\))193 1277 y(\(display)e -("Hello,)h(world")g(p\))193 1322 y(\(get-outp)o(ut)o(-st)o(rin)o(g)f -(p\)\))350 1368 y Fs(=)-6 b Fn(\))19 b Ft("Hello,)e(world")75 -1546 y Fu(\(close-input-port)h FB(p)n(ort)t Fu(\))1094 -b FD(pro)q(cedure)75 1596 y Fu(\(close-output-por)o(t)19 -b FB(p)n(ort)t Fu(\))1072 b FD(pro)q(cedure)75 1669 y -FB(Identic)n(al)15 b(to)g(R)325 1654 y Fy(4)344 1669 -y FB(RS.)75 1771 y Fu(\(read)o(\))1453 b FD(pro)q(cedure)75 -1821 y Fu(\(read)21 b FB(p)n(ort)t Fu(\))1355 b FD(pro)q(cedure)75 -1871 y Fu(\(read-char)n(\))1344 b FD(pro)q(cedure)75 -1921 y Fu(\(read-char)20 b FB(p)n(ort)t Fu(\))1246 b -FD(pro)q(cedure)75 1970 y Fu(\(peek-char)n(\))1344 b -FD(pro)q(cedure)75 2020 y Fu(\(peek-char)20 b FB(p)n(ort)t -Fu(\))1246 b FD(pro)q(cedure)75 2070 y Fu(\(char-ready?)n(\))1300 -b FD(pro)q(cedure)75 2120 y Fu(\(char-ready?)19 b FB(p)n(ort)t -Fu(\))1203 b FD(pro)q(cedure)75 2193 y FB(Identic)n(al)15 -b(to)g(R)325 2178 y Fy(4)344 2193 y FB(RS.)75 2295 y -Fu(\(read-line)n(\))1344 b FD(pro)q(cedure)75 2345 y -Fu(\(read-line)20 b FB(p)n(ort)t Fu(\))1246 b FD(pro)q(cedure)75 -2418 y(Reads)18 b(the)h(next)g(line)f(a)o(v)n(ailable)e(from)g(the)j -(input)f(p)q(ort)h FB(p)n(ort)j FD(and)c(returns)i(it)d(as)i(a)f -(string.)31 b(The)19 b(termi-)75 2468 y(nating)d(newline)h(is)g(not)g -(included)g(in)g(the)g(string.)27 b(If)17 b(no)g(more)f(c)o(haracters)i -(are)g(a)o(v)n(ailable,)d(an)i(end)g(of)f(\014le)75 2518 -y(ob)r(ject)k(is)g(returned.)37 b FB(Port)23 b FD(ma)o(y)18 -b(b)q(e)i(omitted,)f(in)h(whic)o(h)f(case)i(it)e(defaults)h(to)f(the)h -(v)n(alue)f(returned)j(b)o(y)75 2568 y Fu(current-input-por)o(t)p -FD(.)75 2669 y Fu(\(write)f FB(obj)6 b Fu(\))1350 b FD(pro)q(cedure)75 -2719 y Fu(\(write)21 b FB(obj)g(p)n(ort)t Fu(\))1259 -b FD(pro)q(cedure)75 2769 y Fu(\(display)20 b FB(obj)6 -b Fu(\))1307 b FD(pro)q(cedure)75 2819 y Fu(\(display)20 -b FB(obj)i(p)n(ort)t Fu(\))1215 b FD(pro)q(cedure)p eop +21 20 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(21)p 37 64 1838 2 v 37 190 a FF(calling)21 b(a)e(con)o(tin)o(uation)g +(obtained)g(b)o(y)g Fw(call/cc)f FF(or)g(on)h(error\),)g +Fo(h)p FF(th)o(unk)1343 197 y FA(3)1362 190 y Fo(i)g +FF(is)g(called.)32 b(If)19 b Fo(h)p FF(th)o(unk)1788 +197 y FA(2)1808 190 y Fo(i)f FF(is)37 247 y(later)e(reen)o(tered,)f +Fo(h)p FF(th)o(unk)489 254 y FA(1)508 247 y Fo(i)g FF(is)h(called.)37 +364 y Fw(\(catch)24 b Fo(h)p FF(expression)426 371 y +FA(1)446 364 y Fo(i)f(h)p FF(expression)708 371 y FA(2)729 +364 y Fo(i)g Fz(:)8 b(:)g(:)e Fw(\))890 b FF(syn)o(tax)37 +438 y(The)23 b Fo(h)p FF(expression)p Fo(i)p FF(s)g(are)f(ev)m(aluated) +h(from)f(left)g(to)g(righ)o(t.)41 b(If)22 b(an)h(error)e(o)q(ccurs,)j +(ev)m(aluation)g(of)e(the)37 488 y Fo(h)p FF(expression)p +Fo(i)q FF(s)16 b(is)h(ab)q(orted,)g(and)f Fw(#t)g FF(is)h(returned)g +(to)f Fw(catch)p FF('s)g(caller.)25 b(If)16 b(ev)m(aluation)i +(\014nishes)g(without)37 538 y(an)e(error,)e Fw(catch)g +FF(returns)h Fw(#f)p FF(.)125 625 y Fv(\(let*)20 b(\(\(x)i(0\))277 +675 y(\(y)g(\(catch)408 725 y(\(set!)f(x)g(1\))408 774 +y(\(/)g(0\))h(;)f(causes)g(a)g("division)f(by)i(0")f(error)408 +824 y(\(set!)g(x)g(2\)\)\)\))168 874 y(\(cons)g(x)h(y\)\))343 +924 y Fu(=)-7 b Fp(\))21 b Fv(\(1)h(.)f(#t\))37 1129 +y Fw(\(procedure-body)h Fo(h)p FF(pro)q(cedure)p Fo(i)q +Fw(\))1004 b FF(pro)q(cedure)37 1202 y(returns)20 b(the)f(b)q(o)q(dy)h +(of)f Fo(h)p FF(pro)q(cedure)p Fo(i)p FF(.)33 b(If)19 +b Fo(h)p FF(pro)q(cedure)p Fo(i)h FF(is)g(not)f(a)g(closure,)i +Fw(procedure-body)c FF(returns)37 1252 y Fw(#f)p FF(.)125 +1340 y Fv(\(define)j(\(f)h(a)h(b\))190 1389 y(\(+)f(a)h(\(*)f(b)h +(2\)\)\))125 1489 y(\(procedure-body)c(f\))218 b Fu(=)-7 +b Fp(\))22 b Fv(\(lambda)e(\(a)h(b\))866 1539 y(\(+)g(a)h(\(*)f(b)h +(2\)\)\))125 1589 y(\(procedure-body)c(car\))174 b Fu(=)-7 +b Fp(\))22 b Fv(#f)37 1798 y FI(6.10)56 b(Input)19 b(and)g(output)37 +1884 y FF(The)12 b FD(R)160 1868 y FA(4)173 1884 y Fz(RS)h +FF(states)e(that)g(p)q(orts)g(represen)o(t)g(input)i(and)f(output)f +(devices.)20 b(Ho)o(w)o(ev)o(er,)11 b(it)h(de\014nes)g(only)g(p)q(orts) +37 1941 y(whic)o(h)19 b(are)f(attac)o(hed)f(to)h(\014les.)29 +b(In)18 b FB(STk)p FF(,)g(p)q(orts)f(can)h(also)g(b)q(e)h(attac)o(hed)e +(to)g(strings)h(or)g(to)f(a)h(external)37 1997 y(command)f(input)h(or)f +(output.)25 b(String)17 b(p)q(orts)g(are)g(similar)h(to)e(\014le)i(p)q +(orts,)f(except)h(that)e(c)o(haracters)g(are)37 2053 +y(read)k(from)g(\(or)f(written)h(to\))f(a)g(string)h(rather)f(than)h(a) +g(\014le.)35 b(External)20 b(command)g(input)h(or)e(output)37 +2110 y(p)q(orts)d(are)g(implemen)o(ted)h(with)f(Unix)h(pip)q(es)h(and)e +(are)f(called)j(pip)q(e)f(p)q(orts.)22 b(A)16 b(pip)q(e)h(p)q(ort)f(is) +g(created)g(b)o(y)37 2166 y(sp)q(ecifying)f(the)e(command)g(to)f +(execute)i(pre\014xed)g(with)f(the)g(string)g Fw("|)24 +b(")p FF(.)19 b(Sp)q(eci\014cation)c(of)d(a)h(pip)q(e)h(p)q(ort)37 +2223 y(can)i(o)q(ccur)f(ev)o(erywhere)h(a)f(\014le)h(name)f(is)h +(needed.)37 2340 y Fw(\(call-with-input-file)21 b FD(string)j(pr)n(o)n +(c)s Fw(\))870 b FF(pro)q(cedure)37 2397 y Fw(\(call-with-output-file) +21 b FD(string)i(pr)n(o)n(c)s Fw(\))847 b FF(pro)q(cedure)37 +2477 y Fn(Note:)33 b Fu(if)9 b Fn(s)t Fu(tring)g(starts)i(with)f(the)h +(t)o(w)o(o)e(c)o(haracters)j Fv("|)21 b(")p Fu(,)10 b(these)i(pro)q +(cedures)g(return)f(a)f(pip)q(e)g(p)q(ort.)17 b(Consequen)o(tly)m(,)37 +2533 y(it)d(is)g(not)g(p)q(ossible)g(to)f(op)q(en)i(a)e(\014le)h(whose) +h(name)d(starts)j(with)f(those)g(t)o(w)o(o)g(c)o(haracters.)37 +2651 y Fw(\(call-with-input-string)21 b FD(string)i(pr)n(o)n(c)s +Fw(\))823 b FF(pro)q(cedure)37 2731 y(b)q(eha)o(v)o(es)16 +b(exactly)g(as)g Fw(call-with-input-file)d FF(except)j(that)f(the)h(p)q +(ort)f(passed)h(to)f FD(pr)n(o)n(c)j FF(is)e(the)g(string)37 +2787 y(p)q(ort)f(obtained)h(from)f FD(string)s FF(.)p +eop %%Page: 22 22 -22 21 bop 75 47 a FC(22)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(\(newline)n(\))1388 b FD(pro)q(cedure)75 -229 y Fu(\(newline)20 b FB(p)n(ort)t Fu(\))1290 b FD(pro)q(cedure)75 -278 y Fu(\(write-char)20 b FB(char)t Fu(\))1217 b FD(pro)q(cedure)75 -328 y Fu(\(write-char)20 b FB(char)h(p)n(ort)t Fu(\))1124 -b FD(pro)q(cedure)75 402 y FB(Identic)n(al)15 b(to)g(R)325 -387 y Fy(4)344 402 y FB(RS.)75 511 y Fu(\(format)20 b -FB(p)n(ort)i(string)f Fx(obj)523 517 y Fy(1)563 511 y -Fx(obj)618 517 y Fy(2)659 511 y Fx(:)7 b(:)g(:)e Fu(\))923 -b FD(pro)q(cedure)75 585 y(W)m(rites)12 b(the)h FB(obj)6 -b FD(s)13 b(to)f(the)h(giv)o(en)f FB(p)n(ort)t FD(,)g(according)g(to)g -(the)h(format)e(string)h FB(string)s FD(.)18 b FB(String)e -FD(is)c(written)h(literally)m(,)75 635 y(except)i(for)f(the)g(follo)o -(wing)e(sequences:)137 720 y Fm(\017)21 b Fu(~)p FD(a)13 -b(or)h Fu(~)p FD(A)g(is)g(replaced)g(b)o(y)g(the)h(prin)o(ted)f -(represen)o(tation)h(of)e(the)i(next)f FB(obj)6 b FD(.)137 -805 y Fm(\017)21 b Fu(~)p FD(s)14 b(or)g Fu(~)p FD(S)f(is)h(replaced)h -(b)o(y)f(the)g(\\slashi\014ed")g(prin)o(ted)g(represen)o(tation)h(of)f -(the)g(next)g FB(obj)7 b FD(.)137 890 y Fm(\017)21 b -Fu(~~)13 b FD(is)h(replaced)h(b)o(y)e(a)h(single)g(tilde.)137 -975 y Fm(\017)21 b Fu(~)p FD(\045)13 b(is)h(replaced)h(b)o(y)e(a)h -(newline)75 1055 y FB(Port)19 b FD(can)d(b)q(e)g(a)f(b)q(o)q(olean,)g -(a)g(p)q(ort)h(or)g(a)f(string)h(p)q(ort.)23 b(If)15 -b FB(p)n(ort)k FD(is)c Fu(#t)p FD(,)g(output)h(go)q(es)g(to)f(the)h -(curren)o(t)h(output)75 1101 y(p)q(ort;)i(if)d FB(p)n(ort)k -FD(is)d Fu(#f)p FD(,)g(the)h(output)f(is)g(returned)i(as)e(a)g(string.) -28 b(Otherwise,)19 b(the)e(output)h(is)f(prin)o(ted)g(on)g(the)75 -1147 y(sp)q(eci\014ed)e(p)q(ort.)153 1227 y Ft(\(format)i(#f)i("A)g -(test."\))350 1273 y Fs(=)-6 b Fn(\))19 b Ft("A)g(test.")153 -1319 y(\(format)e(#f)i("A)g(~a.")f("test"\))350 1364 -y Fs(=)-6 b Fn(\))19 b Ft("A)g(test.")153 1410 y(\(format)e(#f)i("A)g -(~s.")f("test"\))350 1456 y Fs(=)-6 b Fn(\))19 b Ft("A)g(\\"test\\".)o -(")75 1645 y Fu(\(get-output-strin)o(g)g FB(p)n(ort)t -Fu(\))1072 b FD(pro)q(cedure)75 1715 y(Returns)15 b(the)f(string)g -(asso)q(ciated)h(with)e(the)i(output)f(string)g FB(p)n(ort)s -FD(.)153 1795 y Ft(\(let)19 b(\(\(p)f(\(open-outp)o(ut)o(-st)o(ri)o -(ng\))o(\)\))193 1841 y(\(display)e("Hello,)h(world")g(p\))193 -1887 y(\(get-outp)o(ut)o(-st)o(rin)o(g)f(p\)\))350 1932 -y Fs(=)-6 b Fn(\))19 b Ft("Hello,)e(world")75 2121 y -Fu(\(flush)o(\))1431 b FD(pro)q(cedure)75 2171 y Fu(\(flush)21 -b FB(p)n(ort)t Fu(\))1333 b FD(pro)q(cedure)75 2245 y(Flushes)16 -b(the)f(bu\013er)h(asso)q(ciated)g(with)f(the)g(giv)o(en)g -FB(p)n(ort)s FD(.)21 b(The)16 b FB(p)n(ort)i FD(argumen)o(t)c(ma)o(y)f -(b)q(e)j(omitted,)d(in)i(whic)o(h)75 2295 y(case)g(it)e(defaults)h(to)g -(the)h(v)n(alue)e(returned)i(b)o(y)f Fu(current-output-po)o(rt)p -FD(.)75 2404 y Fu(\(when-port-readab)o(le)19 b FB(p)n(ort)i(hand)r(ler) -t Fu(\))893 b FD(pro)q(cedure)75 2454 y Fu(\(when-port-readab)o(le)19 -b FB(p)n(ort)t Fu(\))1050 b FD(pro)q(cedure)75 2528 y(When)18 -b FB(p)n(ort)j FD(is)c(ready)h(for)f(reading,)h FB(hand)r(ler)5 -b FD(,)18 b(whic)o(h)f(m)o(ust)g(b)q(e)h(a)f(th)o(unk,)h(is)f(called)h -(lea)o(ving)e(the)i(curren)o(t)75 2578 y(ev)n(aluation)d(susp)q(ended.) -29 b(When)17 b FB(hand)r(ler)k FD(execution)c(is)g(terminated,)f -(normal)f(ev)n(aluation)g(is)i(resumed)g(at)75 2627 y(its)e(susp)q -(ension)i(p)q(oin)o(t.)22 b(If)14 b(the)i(sp)q(ecial)g(v)n(alue)f -Fu(#f)f FD(is)h(pro)o(vided)h(as)f FB(hand)r(ler)5 b -FD(,)15 b(the)h(curren)o(t)h(handler)e(for)g FB(p)n(ort)75 -2677 y FD(is)j(deleted.)34 b(If)18 b(a)g(handler)h(is)f(pro)o(vided,)i -(the)f(v)n(alue)f(returned)i(b)o(y)e Fu(when-port-readable)d -FD(is)k(unde\014ned.)75 2727 y(Otherwise,)c(it)e(returns)j(the)e -(handler)g(curren)o(tly)h(asso)q(ciated)g(to)f FB(p)n(ort)s -FD(.)75 2773 y(The)i(example)e(b)q(elo)o(w)h(sho)o(ws)h(a)f(simple)f -(usage)i(of)f(the)h Fu(when-port-reada)o(ble)c FD(pro)q(cedure:)23 -b(the)16 b(command)75 2819 y FB(cmd)i FD(is)c(run)g(with)g(its)g -(output)g(redirected)i(in)d(a)h(pip)q(e)g(asso)q(ciated)h(to)e(the)i -FB(p)h FD(Sc)o(heme)e(p)q(ort.)p eop +22 21 bop 37 45 a FE(22)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 125 190 a Fv(\(call-with-input)o(-stri)o(ng)i("123)i +(456")g(\(lambda)f(\(x\))h(\(read)g(x\)\)\))343 240 y +Fu(=)-7 b Fp(\))21 b Fv(123)37 448 y Fw(\(call-with-output-string)g +FD(pr)n(o)n(c)s Fw(\))936 b FF(pro)q(cedure)37 522 y +FD(Pr)n(o)n(c)20 b FF(should)e(b)q(e)g(a)f(pro)q(cedure)h(of)e(one)i +(argumen)o(t.)25 b Fw(Call-with-output-string)14 b FF(calls)k +FD(pr)n(o)n(c)i FF(with)d(a)37 572 y(freshly)g(op)q(ened)g(output)e +(string)h(p)q(ort.)21 b(The)16 b(result)g(of)f(this)h(pro)q(cedure)h +(is)f(a)f(string)h(con)o(taining)g(all)h(the)37 621 y(text)e(that)g +(has)g(b)q(een)h(written)f(on)g(the)h(string)f(p)q(ort.)125 +705 y Fv(\(call-with-outpu)o(t-str)o(ing)190 755 y(\(lambda)20 +b(\(x\))i(\(write)e(123)h(x\))h(\(display)e("Hello")g(x\)\)\))343 +805 y Fu(=)-7 b Fp(\))21 b Fv("123Hello")37 1001 y Fw(\(input-port?)i +FD(obj)7 b Fw(\))1242 b FF(pro)q(cedure)37 1058 y Fw(\(output-port?)23 +b FD(obj)7 b Fw(\))1218 b FF(pro)q(cedure)37 1138 y FD(Identic)n(al)15 +b(to)i(R)311 1121 y FA(4)331 1138 y FD(RS.)37 1250 y +Fw(\(input-string-port?)22 b FD(obj)7 b Fw(\))1075 b +FF(pro)q(cedure)37 1307 y Fw(\(output-string-port?)22 +b FD(obj)7 b Fw(\))1051 b FF(pro)q(cedure)37 1387 y(Returns)16 +b Fw(#t)f FF(if)h FD(obj)22 b FF(is)15 b(either)h(an)f(input)i(or)d(an) +h(output)g(string)h(p)q(ort,)e(otherwise)h(returns)g +Fw(#f)p FF(.)37 1500 y Fw(\(current-input-port)n(\))1164 +b FF(pro)q(cedure)37 1556 y Fw(\(current-output-port)n(\))1140 +b FF(pro)q(cedure)37 1636 y FD(Identic)n(al)15 b(to)i(R)311 +1620 y FA(4)331 1636 y FD(RS.)37 1749 y Fw(\(current-error-port)n(\)) +1164 b FF(pro)q(cedure)37 1829 y(Returns)16 b(the)g(curren)o(t)f +(default)g(error)g(p)q(ort.)37 1942 y Fw(\(with-input-from-file)21 +b FD(string)j(thunk)5 b Fw(\))841 b FF(pro)q(cedure)37 +1998 y Fw(\(with-output-to-file)22 b FD(string)h(thunk)5 +b Fw(\))865 b FF(pro)q(cedure)37 2079 y FD(Identic)n(al)15 +b(to)i(R)311 2062 y FA(4)331 2079 y FD(RS.)37 2135 y +FF(The)h(follo)o(wing)g(example)g(uses)f(a)g(pip)q(e)h(p)q(ort)f(op)q +(ened)h(for)f(reading.)26 b(It)17 b(p)q(ermits)h(to)e(read)h(all)h(the) +f(lines)37 2191 y(pro)q(duced)g(b)o(y)e(an)f(external)i +Fw(ls)e FF(command)h(\(i.e.)20 b(the)15 b(ouput)g(of)g(the)g +Fw(ls)f FF(command)h(is)h FD(r)n(e)n(dir)n(e)n(cte)n(d)e +FF(to)g(the)37 2248 y(Sc)o(heme)i(pip)q(e)h(p)q(ort\).)125 +2343 y Fv(\(with-input-from)o(-file)h("|)j(ls)h(-ls")168 +2393 y(\(lambda)f(\(\))212 2443 y(\(do)g(\(\(l)g(\(read-line\))f +(\(read-line\)\)\))299 2493 y(\(\(eof-object?)f(l\)\))255 +2543 y(\(display)i(l\))255 2592 y(\(newline\)\)\)\))37 +2738 y FF(Hereafter)f(is)g(another)f(example)i(of)e(Unix)h(command)g +(redirection.)35 b(This)20 b(time,)h(it)e(is)i(the)e(standard)37 +2787 y(input)e(of)d(the)i(Unix)g(command)f(whic)o(h)h(is)g(redirected.) +p eop %%Page: 23 23 -23 22 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(23)p 75 64 1763 2 v 153 179 a Ft(\(define)17 b(p)j(\(open-inp)o(ut)o -(-fi)o(le)c("|)j(cmd"\)\))153 224 y(\(when-port-)o(re)o(ada)o(ble)d(p) -389 270 y(\(lambda\(\))428 316 y(\(let)i(\(\()h(l)g(\(read-line)d -(p\)\)\))467 361 y(\(if)j(\(eof-obje)o(ct)o(?)e(l\))546 -407 y(\(begin)585 453 y(;;)i(delete)e(handler)585 498 -y(\(when-por)o(t-r)o(ead)o(ab)o(le)f(p)j(#f\))585 544 -y(;;)g(and)f(close)g(port)585 590 y(\(close-in)o(put)o(-po)o(rt)e -(p\)\))546 635 y(\(format)h(#t)h("Line)g(read:)g(~A\\n")g(l\)\)\)\)\)) -75 850 y Fu(\(when-port-writab)o(le)h FB(p)n(ort)i(hand)r(ler)t -Fu(\))893 b FD(pro)q(cedure)75 900 y Fu(\(when-port-writab)o(le)19 -b FB(p)n(ort)t Fu(\))1050 b FD(pro)q(cedure)75 974 y(When)18 -b FB(p)n(ort)j FD(is)d(ready)g(for)g(writing,)f FB(hand)r(ler)5 -b FD(,)18 b(whic)o(h)g(m)o(ust)f(b)q(e)h(a)f(th)o(unk,)i(is)e(called)h -(lea)o(ving)f(the)h(curren)o(t)75 1023 y(ev)n(aluation)d(susp)q(ended.) -29 b(When)17 b FB(hand)r(ler)k FD(execution)c(is)g(terminated,)f -(normal)f(ev)n(aluation)g(is)i(resumed)g(at)75 1073 y(its)e(susp)q -(ension)i(p)q(oin)o(t.)22 b(If)14 b(the)i(sp)q(ecial)g(v)n(alue)f -Fu(#f)f FD(is)h(pro)o(vided)h(as)f FB(hand)r(ler)5 b -FD(,)15 b(the)h(curren)o(t)h(handler)e(for)g FB(p)n(ort)75 -1123 y FD(is)j(deleted.)34 b(If)18 b(a)g(handler)h(is)f(pro)o(vided,)i -(the)f(v)n(alue)f(returned)i(b)o(y)e Fu(when-port-writable)d -FD(is)k(unde\014ned.)75 1173 y(Otherwise,)c(it)e(returns)j(the)e -(handler)g(curren)o(tly)h(asso)q(ciated)g(to)f FB(p)n(ort)s -FD(.)75 1269 y Fu(\(load)21 b FB(\014lename)s Fu(\))1278 -b FD(pro)q(cedure)75 1319 y Fu(\(load)21 b FB(\014lename)h(envir)n -(onment)t Fu(\))1031 b FD(pro)q(cedure)75 1389 y(The)17 -b(\014rst)g(form)e(is)i(iden)o(tical)f(to)g FB(R)650 -1374 y Fy(4)662 1389 y Fx(RS)r FD(.)27 b(The)17 b(second)h(one)f(loads) -f(the)h(con)o(ten)o(t)g(of)f FB(\014lename)21 b FD(in)16 -b(the)h(giv)o(en)75 1434 y FB(envir)n(onment)t FD(.)h(So,)13 -b(the)i(\014rst)g(form)d(is)i(equiv)n(alen)o(t)f(to)153 -1507 y Ft(\(load)18 b(filename)f(\(global-e)o(nv)o(iro)o(nm)o(ent)o -(\)\))75 1629 y Fl(Note:)28 b Fs(The)10 b Fl(lo)n(ad)h -Fs(primitiv)o(e)g(has)f(b)q(een)g(extended)g(to)f(allo)o(w)h(loading)i -(of)d(ob)r(ject)g(\014les,)i(though)f(this)g(is)g(not)f(implemen)o(ted) -75 1679 y(on)h(all)h(systems.)16 b(This)10 b(extension)i(uses)e -(dynamic)h(loading)h(on)e(systems)g(whic)o(h)g(supp)q(ort)h(it)1411 -1663 y Fr(2)1428 1679 y Fs(.)16 b(See)10 b([4])f(for)g(more)h(details.) -75 1826 y Fu(\(try-load)20 b FB(\014lename)s Fu(\))1191 -b FD(pro)q(cedure)75 1876 y Fu(\(try-load)20 b FB(\014lename)i(envir)n -(onment)t Fu(\))944 b FD(pro)q(cedure)75 1949 y(T)m(ries)11 -b(to)g(load)g(the)h(\014le)f(named)f FB(\014lename)t -FD(.)17 b(If)11 b FB(\014lename)k FD(exists)d(and)f(is)g(readable,)g -(it)g(is)g(loaded,)g(and)g Fu(try-load)75 1999 y FD(returns)17 -b Fu(#t)p FD(.)k(Otherwise,)c(the)e(result)h(of)f(the)g(call)g(is)g -Fu(#f)p FD(.)21 b(The)16 b(second)g(form)d(of)i FB(try-lo)n(ad)k -FD(tries)d(to)f(load)f(the)75 2049 y(con)o(ten)o(t)h(of)e -FB(\014lename)k FD(in)d(the)g(giv)o(en)g FB(envir)n(onment)t -FD(.)75 2145 y Fu(\(autoload)20 b FB(\014lename)i Fm(h)p -FD(sym)o(b)q(ol)611 2151 y Fy(1)628 2145 y Fm(i)g(h)p -FD(sym)o(b)q(ol)812 2151 y Fy(2)829 2145 y Fm(i)g Fx(:)7 -b(:)g(:)f Fu(\))774 b FD(syn)o(tax)75 2219 y(De\014nes)14 -b Fm(h)p FD(sym)o(b)q(ol)p Fm(i)n FD(s)f(as)g(autoload)f(sym)o(b)q(ols) -f(asso)q(ciated)i(to)g(\014le)f FB(\014lename)t FD(.)18 -b(Fisrt)13 b(ev)n(aluation)e(of)h(an)h(autoload)75 2268 -y(sym)o(b)q(ol)i(will)h(cause)i(the)f(loading)f(of)g(its)h(asso)q -(ciated)h(\014le.)28 b FB(Filename)20 b FD(m)o(ust)c(pro)o(vide)h(a)g -(de\014nition)f(for)h(the)75 2318 y(sym)o(b)q(ol)12 b(whic)o(h)i(lead)f -(to)h(its)g(loading,)e(otherwise)j(an)e(error)i(is)f(signaled.)75 -2415 y Fu(\(autoload?)20 b FB(symb)n(ol)t Fu(\))1198 -b FD(pro)q(cedure)75 2488 y(Returns)15 b Fu(#t)e FD(if)g -FB(symb)n(ol)18 b FD(is)c(an)g(autoload)e(sym)o(b)q(ol;)g(returns)j -Fu(#f)f FD(otherwise.)75 2585 y Fu(\(require)20 b FB(string)t -Fu(\))1258 b FD(pro)q(cedure)75 2635 y Fu(\(provide)20 -b FB(string)t Fu(\))1258 b FD(pro)q(cedure)75 2685 y -Fu(\(provided?)20 b FB(string)t Fu(\))1214 b FD(pro)q(cedure)p -75 2741 705 2 v 121 2768 a Fr(2)139 2779 y Fq(Curren)o(t)10 -b(v)o(ersion)h(\(3.99\))f(allo)o(ws)h(dynamic)f(loading)g(only)h(on)g -(some)g(platforms:)j(SunOs)d(4.1.x,)g(SunOs)g(5.x,)g(NetBSD)h(1.0,)75 -2819 y(Lin)o(ux)e(2.0,)h(HPUX,)i(Irix)e(5.3)p eop +23 22 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(23)p 37 64 1838 2 v 125 190 a Fv(\(with-output-to-)o(file)18 +b("|)k(mail)f(root")168 240 y(\(lambda\(\))212 290 y(\(format)f(#t)i +("A)f(simple)f(mail)h(sent)g(from)g(STk\\n"\)\)\))37 +501 y Fw(\(with-input-from-string)g FD(string)i(thunk)5 +b Fw(\))794 b FF(pro)q(cedure)37 582 y(A)24 b(string)f(p)q(ort)g(is)h +(op)q(ened)g(for)f(input)h(from)f FD(string)s FF(.)44 +b Fw(Current-input-port)21 b FF(is)j(set)f(to)g(the)g(p)q(ort)37 +639 y(and)i FD(thunk)30 b FF(is)25 b(called.)50 b(When)26 +b FD(thunk)j FF(returns,)e(the)e(previous)g(default)g(input)h(p)q(ort)f +(is)g(restored.)37 695 y Fw(With-input-from-string)13 +b FF(returns)i(the)g(v)m(alue)h(yielded)i(b)o(y)d FD(thunk)5 +b FF(.)125 799 y Fv(\(with-input-from)o(-stri)o(ng)19 +b("123)i(456")g(\(lambda)f(\(\))h(\(read\)\)\))343 848 +y Fu(=)-7 b Fp(\))21 b Fv(123)37 1073 y Fw(\(with-output-to-string)g +FD(thunk)5 b Fw(\))955 b FF(pro)q(cedure)37 1154 y(A)18 +b(string)g(p)q(ort)g(is)g(op)q(ened)h(for)f(output.)27 +b Fw(Current-output-port)16 b FF(is)i(set)g(to)f(it)h(and)g +FD(thunk)23 b FF(is)c(called.)37 1210 y(When)11 b(the)f +FD(thunk)15 b FF(returns,)c(the)f(previous)h(default)g(output)f(p)q +(ort)g(is)g(restored.)18 b Fw(With-output-to-string)37 +1267 y FF(returns)e(the)f(string)g(con)o(taining)h(all)g(the)f(text)g +(written)g(on)g(the)h(string)f(p)q(ort.)125 1370 y Fv +(\(with-output-to-)o(strin)o(g)k(\(lambda)h(\(\))i(\(write)e(123\))h +(\(write)g("Hello"\)\)\))343 1420 y Fu(=)-7 b Fp(\))21 +b Fv("123Hello")37 1644 y Fw(\(open-input-file)h FD(\014lename)s +Fw(\))1043 b FF(pro)q(cedure)37 1701 y Fw(\(open-output-file)22 +b FD(\014lename)s Fw(\))1019 b FF(pro)q(cedure)37 1782 +y FD(Identic)n(al)15 b(to)i(R)311 1765 y FA(4)331 1782 +y FD(RS.)37 1839 y Fn(Note:)36 b Fu(if)12 b Fn(f)d Fu(ilename)i(starts) +j(with)e(the)i(string)f Fv("|)21 b(")p Fu(,)12 b(these)j(pro)q(cedure)f +(return)g(a)f(pip)q(e)g(p)q(ort.)18 b(Consequen)o(tly)m(,)13 +b(it)f(is)37 1895 y(not)i(p)q(ossible)g(to)g(op)q(en)g(a)g(\014le)g +(whose)g(name)f(starts)i(with)f(those)g(t)o(w)o(o)g(c)o(haracters.)37 +2018 y Fw(\(open-input-string)22 b FD(string)t Fw(\))1046 +b FF(pro)q(cedure)37 2098 y(Returns)16 b(an)f(input)i(string)e(p)q(ort) +g(capable)h(of)f(deliv)o(ering)i(c)o(haracters)d(from)h +FD(string)s FF(.)37 2221 y Fw(\(open-output-string)n(\))1164 +b FF(pro)q(cedure)37 2301 y(Returns)16 b(an)f(output)g(string)h(p)q +(ort)e(capable)j(of)d(receiving)j(and)e(collecting)i(c)o(haracters.)37 +2424 y Fw(\(get-output-string)22 b FD(p)n(ort)t Fw(\))1082 +b FF(pro)q(cedure)37 2498 y(Returns)16 b(a)f(string)g(con)o(taining)h +(all)g(the)f(text)g(that)f(has)h(b)q(een)i(written)e(on)g(the)g(output) +g(string)g FD(p)n(ort)5 b FF(.)125 2588 y Fv(\(let)21 +b(\(\(p)g(\(open-output-str)o(ing\)\))o(\))168 2638 y(\(display)f +("Hello,)h(world")f(p\))168 2688 y(\(get-output-string)e(p\)\))343 +2738 y Fu(=)-7 b Fp(\))21 b Fv("Hello,)g(world")p eop %%Page: 24 24 -24 23 bop 75 47 a FC(24)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(Require)f FD(loads)h(the)h(\014le)g(whose)g -(name)e(is)i FB(string)j FD(if)13 b(it)h(w)o(as)h(not)f(previously)h -(\\pro)o(vided".)p Fu(Provide)d FD(p)q(ermits)75 229 -y(to)k(store)g FB(string)j FD(in)c(the)i(list)e(of)g(already)h(pro)o -(vided)f(\014les.)24 b(Pro)o(viding)15 b(a)h(\014le)f(p)q(ermits)h(to)f -(a)o(v)o(oid)g(subsequen)o(t)75 278 y(loads)e(of)h(this)g(\014le.)k -Fu(Provided?)12 b FD(returns)j Fu(#t)e FD(if)g FB(string)k -FD(w)o(as)d(already)g(pro)o(vided;)f(it)h(returns)h Fu(#f)e -FD(otherwise.)75 388 y Fu(\(transcript-on)19 b FB(\014lename)s -Fu(\))1082 b FD(pro)q(cedure)75 438 y Fu(\(transcript-off)m(\))1235 -b FD(pro)q(cedure)75 512 y(Not)14 b(implemen)o(ted.)75 -622 y Fu(\(open-file)20 b FB(\014lename)i(mo)n(de)s Fu(\))1054 -b FD(pro)q(cedure)75 696 y(Op)q(ens)18 b(the)f(\014le)f(whose)h(name)e -(is)i FB(\014lename)j FD(with)c(the)h(sp)q(eci\014ed)h -FB(mo)n(de)s FD(.)26 b FB(Mo)n(de)20 b FD(m)o(ust)15 -b(b)q(e)j(\\r")e(to)g(op)q(en)h(for)75 746 y(reading)c(or)f(\\w")g(to)h -(op)q(en)g(for)g(writing.)j(If)d(the)g(\014le)g(can)g(b)q(e)g(op)q -(ened,)h FB(op)n(en-\014le)i FD(returns)e(the)g(p)q(ort)f(asso)q -(ciated)75 796 y(with)h(the)g(giv)o(en)f(\014le,)h(otherwise)h(it)e -(returns)j Fu(#f)p FD(.)h(Here)e(again,)e(the)h(\\magic")d(string)j -Fu("|)22 b(``)13 b FD(p)q(ermit)g(to)h(op)q(en)75 846 -y(a)g(pip)q(e)g(p)q(ort.)75 956 y Fu(\(close-port)20 -b FB(p)n(ort)t Fu(\))1224 b FD(pro)q(cedure)75 1030 y(Closes)14 -b FB(p)n(ort)t FD(.)k(If)13 b FB(p)n(ort)18 b FD(denotes)d(a)e(string)h -(p)q(ort,)g(further)h(reading)f(or)f(writing)h(on)f(this)h(p)q(ort)g -(is)g(disallo)o(w)o(ed.)75 1140 y Fu(\(transcript-on)19 -b FB(\014lename)s Fu(\))1082 b FD(pro)q(cedure)75 1189 -y Fu(\(transcript-off)m(\))1235 b FD(pro)q(cedure)75 -1264 y(Not)14 b(implemen)o(ted.)75 1373 y Fu(\(port->string)19 -b FB(p)n(ort)t Fu(\))1181 b FD(pro)q(cedure)75 1423 y -Fu(\(port->list)20 b FB(r)n(e)n(ader)h(p)n(ort)t Fu(\))1091 -b FD(pro)q(cedure)75 1473 y Fu(\(port->string-lis)o(t)19 -b FB(p)n(ort)t Fu(\))1072 b FD(pro)q(cedure)75 1523 y -Fu(\(port->sexp-list)18 b FB(p)n(ort)t Fu(\))1116 b FD(pro)q(cedure)75 -1597 y(Those)19 b(pro)q(cedures)i(are)e(utilit)o(y)e(for)h(generally)g -(parsing)g(input)g(streams.)32 b(Their)19 b(sp)q(eci\014cation)g(has)f -(b)q(een)75 1647 y(stolen)c(from)e Fu(scsh)p FD(.)75 -1693 y Fu(Port->string)f FD(reads)k(the)g(input)e(p)q(ort)h(un)o(til)f -(eof,)h(then)g(returns)i(the)e(accum)o(ulated)f(string.)153 -1774 y Ft(\(port->stri)o(ng)j(\(open-inpu)o(t-)o(fil)o(e)g("|)j(\(echo) -f(AAA;)g(echo)g(BBB\)"\)\))703 1820 y Fs(=)-6 b Fn(\))19 -b Ft("AAA\\nBBB\\)o(n")153 1866 y(\(define)e(exec)310 -1911 y(\(lambda)g(\(command\))369 1957 y(\(call-with)o(-in)o(pu)o(t-f)o -(il)o(e)428 2003 y(\(string-ap)o(pe)o(nd)f("|)j(")g(command\))e -(port->str)o(ing)o(\)\))o(\))153 2094 y(\(exec)h("ls)h(-l"\))273 -b Fs(=)-6 b Fn(\))19 b Ft(a)g(string)f(which)f(contains)g(the)h(result) -g(of)g("ls)h(-l")75 2221 y Fu(Port->list)f FD(uses)j(the)f -FB(r)n(e)n(ader)j FD(function)d(to)f(rep)q(eatedly)i(read)g(ob)r(jects) -g(from)c FB(p)n(ort)t FD(.)36 b(Thes)20 b(ob)r(jects)h(are)75 -2266 y(accum)o(ulated)13 b(in)g(a)h(list)f(whic)o(h)h(is)g(returned)i -(up)q(on)d(eof.)153 2348 y Ft(\(port->list)j(read-line)g(\(open-inp)o -(ut-)o(fil)o(e)g("|)j(\(echo)f(AAA;)g(echo)g(BBB\)"\)\))703 -2393 y Fs(=)-6 b Fn(\))19 b Ft(\("AAA")e("BBB"\))75 2520 -y Fu(Port->string-list)10 b FD(reads)15 b(the)g(input)e(p)q(ort)i(line) -e(b)o(y)h(line)f(un)o(til)g(eof,)g(then)i(returns)g(the)g(accum)o -(ulated)e(list)75 2565 y(of)g(lines.)18 b(This)c(pro)q(cedure)i(is)e -(de\014ned)h(as)153 2647 y Ft(\(define)i(port->strin)o(g-)o(lis)o(t)f -(\(lambda)h(\(p\)\(port->)o(lis)o(t)g(read-lin)o(e)g(p\)\)\))75 -2773 y Fu(Port->sexp-list)9 b FD(rep)q(eatedly)k(reads)f(data)g(from)e -(the)i(p)q(ort)g(un)o(til)f(eof,)h(then)g(returns)i(the)e(accum)o -(ulated)f(list)75 2819 y(of)i(items.)k(This)d(pro)q(cedure)i(is)e -(de\014ned)h(as)p eop +24 23 bop 37 45 a FE(24)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a Fw(\(close-input-port)22 b FD(p)n(ort)t +Fw(\))1106 b FF(pro)q(cedure)37 247 y Fw(\(close-output-port)22 +b FD(p)n(ort)t Fw(\))1082 b FF(pro)q(cedure)37 328 y +FD(Identic)n(al)15 b(to)i(R)311 311 y FA(4)331 328 y +FD(RS.)37 450 y Fw(\(read\))1498 b FF(pro)q(cedure)37 +506 y Fw(\(read)24 b FD(p)n(ort)t Fw(\))1392 b FF(pro)q(cedure)37 +563 y Fw(\(read-char)o(\))1379 b FF(pro)q(cedure)37 619 +y Fw(\(read-char)23 b FD(p)n(ort)t Fw(\))1273 b FF(pro)q(cedure)37 +676 y Fw(\(peek-char)o(\))1379 b FF(pro)q(cedure)37 732 +y Fw(\(peek-char)23 b FD(p)n(ort)t Fw(\))1273 b FF(pro)q(cedure)37 +789 y Fw(\(char-ready?)o(\))1331 b FF(pro)q(cedure)37 +845 y Fw(\(char-ready?)23 b FD(p)n(ort)t Fw(\))1225 b +FF(pro)q(cedure)37 926 y FD(Identic)n(al)15 b(to)i(R)311 +909 y FA(4)331 926 y FD(RS.)37 1048 y Fw(\(read-line)o(\))1379 +b FF(pro)q(cedure)37 1105 y Fw(\(read-line)23 b FD(p)n(ort)t +Fw(\))1273 b FF(pro)q(cedure)37 1185 y(Reads)24 b(the)f(next)f(line)j +(a)o(v)m(ailable)f(from)e(the)h(input)g(p)q(ort)g FD(p)n(ort)k +FF(and)c(returns)g(it)g(as)f(a)g(string.)43 b(The)37 +1242 y(terminating)15 b(newline)i(is)e(not)f(included)j(in)f(the)f +(string.)k(If)c(no)g(more)f(c)o(haracters)g(are)g(a)o(v)m(ailable,)i +(an)e(end)37 1298 y(of)f(\014le)h(ob)s(ject)e(is)h(returned.)20 +b FD(Port)d FF(ma)o(y)12 b(b)q(e)h(omitted,)g(in)h(whic)o(h)g(case)e +(it)h(defaults)h(to)e(the)h(v)m(alue)h(returned)37 1355 +y(b)o(y)i Fw(current-input-port)p FF(.)37 1477 y Fw(\(write)24 +b FD(obj)7 b Fw(\))1385 b FF(pro)q(cedure)37 1533 y Fw(\(write)24 +b FD(obj)f(p)n(ort)t Fw(\))1287 b FF(pro)q(cedure)37 +1590 y Fw(\(display)23 b FD(obj)7 b Fw(\))1338 b FF(pro)q(cedure)37 +1646 y Fw(\(display)23 b FD(obj)h(p)n(ort)t Fw(\))1239 +b FF(pro)q(cedure)37 1703 y Fw(\(newline)o(\))1427 b +FF(pro)q(cedure)37 1759 y Fw(\(newline)23 b FD(p)n(ort)t +Fw(\))1321 b FF(pro)q(cedure)37 1816 y Fw(\(write-char)23 +b FD(char)5 b Fw(\))1240 b FF(pro)q(cedure)37 1872 y +Fw(\(write-char)23 b FD(char)h(p)n(ort)t Fw(\))1139 b +FF(pro)q(cedure)37 1953 y FD(Identic)n(al)15 b(to)i(R)311 +1936 y FA(4)331 1953 y FD(RS.)37 2075 y Fw(\(format)23 +b FD(p)n(ort)i(string)e Fz(obj)529 2082 y FA(1)572 2075 +y Fz(obj)633 2082 y FA(2)675 2075 y Fz(:)8 b(:)g(:)e +Fw(\))919 b FF(pro)q(cedure)37 2156 y(W)l(rites)19 b(the)g +FD(obj)7 b FF(s)18 b(to)g(the)h(giv)o(en)g FD(p)n(ort)5 +b FF(,)19 b(according)g(to)f(the)h(format)e(string)i +FD(string)s FF(.)30 b FD(String)22 b FF(is)d(written)37 +2212 y(literally)l(,)e(except)f(for)f(the)g(follo)o(wing)h(sequences:) +106 2309 y Fo(\017)22 b Fw(~)p FF(a)15 b(or)g Fw(~)p +FF(A)g(is)g(replaced)i(b)o(y)e(the)g(prin)o(ted)h(represen)o(tation)f +(of)g(the)g(next)h FD(obj)6 b FF(.)106 2405 y Fo(\017)22 +b Fw(~)p FF(s)15 b(or)g Fw(~)p FF(S)g(is)h(replaced)g(b)o(y)f(the)h +(\\slashi\014ed")g(prin)o(ted)g(represen)o(tation)f(of)g(the)g(next)g +FD(obj)7 b FF(.)106 2502 y Fo(\017)22 b Fw(~~)15 b FF(is)h(replaced)g +(b)o(y)f(a)g(single)i(tilde.)106 2598 y Fo(\017)22 b +Fw(~)p FF(\045)15 b(is)h(replaced)g(b)o(y)f(a)g(newline)37 +2688 y FD(Port)j FF(can)12 b(b)q(e)h(a)f(b)q(o)q(olean,)i(a)e(p)q(ort)g +(or)g(a)g(string)g(p)q(ort.)19 b(If)13 b FD(p)n(ort)k +FF(is)c Fw(#t)p FF(,)f(output)g(go)q(es)h(to)e(the)i(curren)o(t)f +(output)37 2738 y(p)q(ort;)i(if)h FD(p)n(ort)k FF(is)14 +b Fw(#f)p FF(,)g(the)g(output)g(is)g(returned)h(as)e(a)h(string.)20 +b(Otherwise,)14 b(the)h(output)e(is)i(prin)o(ted)g(on)f(the)37 +2787 y(sp)q(eci\014ed)k(p)q(ort.)p eop %%Page: 25 25 -25 24 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(25)p 75 64 1763 2 v 153 179 a Ft(\(define)17 b(port->sexp-)o(li)o(st) -f(\(lambda)h(\(p\))i(\(port->l)o(ist)d(read)i(p\)\)\))75 -311 y FD(F)m(or)d(instance,)i(the)f(follo)o(wing)d(expression)j(giv)o -(es)g(the)g(list)f(of)g(users)i(curren)o(tly)g(connected)g(on)f(the)g -(mac)o(hine)75 357 y(running)e(the)g Fz(STk)g FD(in)o(terpreter.)153 -446 y Ft(\(port->sexp)o(-l)o(ist)i(\(open-inp)o(ut-)o(fi)o(le)g("|)j -(users"\)\))75 672 y FG(6.11)56 b(Keyw)n(ords)75 754 -y FD(Keyw)o(ords)18 b(are)g(sym)o(b)q(olic)d(constan)o(ts)j(whic)o(h)g -(ev)n(aluate)e(to)i(themselv)o(es.)28 b(A)17 b(k)o(eyw)o(ord)g(m)o(ust) -g(b)q(egin)g(with)g(a)75 804 y(colon.)75 917 y Fu(\(keyword?)j -FB(obj)6 b Fu(\))1285 b FD(pro)q(cedure)75 993 y(Returns)15 -b Fu(#t)e FD(if)g FB(obj)20 b FD(is)14 b(a)f(k)o(eyw)o(ord,)h -(otherwise)h(returns)g Fu(#f)p FD(.)75 1118 y Fu(\(make-keyword)k -FB(obj)6 b Fu(\))1198 b FD(pro)q(cedure)75 1190 y(Builds)14 -b(a)f(k)o(eyw)o(ord)h(from)e(the)i(giv)o(en)f FB(obj)6 -b FD(.)18 b FB(obj)i FD(m)o(ust)12 b(b)q(e)j(a)e(sym)o(b)q(ol)f(or)i(a) -f(string.)18 b(A)c(colon)f(is)h(automatically)75 1236 -y(prep)q(ended.)153 1325 y Ft(\(make-keywo)o(rd)i("test"\))350 -1371 y Fs(=)-6 b Fn(\))19 b Ft(:test)153 1417 y(\(make-keywo)o(rd)d -('test\))350 1462 y Fs(=)-6 b Fn(\))19 b Ft(:test)153 -1508 y(\(make-keywo)o(rd)d(":hello"\))350 1553 y Fs(=)-6 -b Fn(\))19 b Ft(::hello)75 1763 y Fu(\(keyword->string)f -FB(keywor)n(d)t Fu(\))1044 b FD(pro)q(cedure)75 1835 -y(Returns)15 b(the)f(name)f(of)g FB(keywor)n(d)18 b FD(as)c(a)g -(string.)k(The)c(leading)f(colon)g(is)h(included)g(in)g(the)g(result.) -153 1924 y Ft(\(keyword->s)o(tr)o(ing)i(:test\))350 1970 -y Fs(=)-6 b Fn(\))19 b Ft(":test")75 2179 y Fu(\(get-keyword)g -FB(keywor)n(d)j(list)t Fu(\))1054 b FD(pro)q(cedure)75 -2229 y Fu(\(get-keyword)19 b FB(keywor)n(d)j(list)f(default)t -Fu(\))912 b FD(pro)q(cedure)75 2301 y FB(List)14 b FD(m)o(ust)c(b)q(e)i -(a)f(list)f(of)h(k)o(eyw)o(ords)g(and)g(their)g(resp)q(ectiv)o(e)i(v)n -(alues.)k Fu(Get-keyword)9 b FD(scans)j(the)f FB(list)j -FD(and)d(returns)75 2346 y(the)16 b(v)n(alue)e(asso)q(ciated)i(with)f -(the)g(giv)o(en)g FB(keywor)n(d)t FD(.)22 b(If)14 b(the)i -FB(keywor)n(d)j FD(do)q(es)d(not)f(app)q(ear)h(in)e(an)h(o)q(dd)g(p)q -(osition)75 2392 y(in)e FB(list)s FD(,)h(the)g(sp)q(eci\014ed)i -FB(default)h FD(is)d(returned,)h(or)f(an)g(error)h(is)e(raised)i(if)e -(no)g(default)h(w)o(as)g(sp)q(eci\014ed.)153 2481 y Ft(\(get-keywor)o -(d)i(:one)j('\(:one)e(1)i(:two)f(2\)\))350 2527 y Fs(=)-6 -b Fn(\))19 b Ft(1)153 2573 y(\(get-keywor)o(d)d(:four)i('\(:one)f(1)j -(:two)e(2\))h(#f\))350 2618 y Fs(=)-6 b Fn(\))19 b Ft(#f)153 -2664 y(\(get-keywor)o(d)d(:four)i('\(:one)f(1)j(:two)e(2\)\))350 -2710 y Fs(=)-6 b Fn(\))19 b Fi(error)p eop +25 24 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(25)p 37 64 1838 2 v 125 190 a Fv(\(format)20 b(#f)h("A)h(test."\))343 +240 y Fu(=)-7 b Fp(\))21 b Fv("A)h(test.")125 290 y(\(format)e(#f)h("A) +h(~a.")f("test"\))343 340 y Fu(=)-7 b Fp(\))21 b Fv("A)h(test.")125 +390 y(\(format)e(#f)h("A)h(~s.")f("test"\))343 439 y +Fu(=)-7 b Fp(\))21 b Fv("A)h(\\"test\\".")37 687 y Fw +(\(get-output-string)g FD(p)n(ort)t Fw(\))1082 b FF(pro)q(cedure)37 +764 y(Returns)16 b(the)g(string)f(asso)q(ciated)g(with)h(the)f(output)g +(string)g FD(p)n(ort)5 b FF(.)125 871 y Fv(\(let)21 b(\(\(p)g +(\(open-output-str)o(ing\)\))o(\))168 921 y(\(display)f("Hello,)h +(world")f(p\))168 971 y(\(get-output-string)e(p\)\))343 +1020 y Fu(=)-7 b Fp(\))21 b Fv("Hello,)g(world")37 1268 +y Fw(\(flush\))1474 b FF(pro)q(cedure)37 1324 y Fw(\(flush)24 +b FD(p)n(ort)t Fw(\))1368 b FF(pro)q(cedure)37 1408 y(Flushes)20 +b(the)f(bu\013er)g(asso)q(ciated)g(with)g(the)g(giv)o(en)g +FD(p)n(ort)5 b FF(.)30 b(The)19 b FD(p)n(ort)k FF(argumen)o(t)18 +b(ma)o(y)g(b)q(e)i(omitted,)f(in)37 1465 y(whic)o(h)e(case)e(it)g +(defaults)h(to)e(the)i(v)m(alue)g(returned)g(b)o(y)f +Fw(current-output-port)p FF(.)37 1613 y Fw(\(when-port-readable)22 +b FD(p)n(ort)i(hand)r(ler)5 b Fw(\))884 b FF(pro)q(cedure)37 +1670 y Fw(\(when-port-readable)22 b FD(p)n(ort)t Fw(\))1058 +b FF(pro)q(cedure)37 1754 y(When)14 b FD(p)n(ort)19 b +FF(is)14 b(ready)f(for)g(reading,)h FD(hand)r(ler)5 b +FF(,)14 b(whic)o(h)g(m)o(ust)f(b)q(e)h(a)f(th)o(unk,)h(is)g(called)h +(lea)o(ving)f(the)g(curren)o(t)37 1810 y(ev)m(aluation)j(susp)q(ended.) +23 b(When)16 b FD(hand)r(ler)k FF(execution)d(is)f(terminated,)f +(normal)h(ev)m(aluation)g(is)g(resumed)37 1867 y(at)i(its)g(susp)q +(ension)h(p)q(oin)o(t.)29 b(If)18 b(the)g(sp)q(ecial)i(v)m(alue)f +Fw(#f)f FF(is)g(pro)o(vided)h(as)f FD(hand)r(ler)5 b +FF(,)18 b(the)g(curren)o(t)g(handler)37 1923 y(for)f +FD(p)n(ort)23 b FF(is)18 b(deleted.)28 b(If)18 b(a)f(handler)i(is)f +(pro)o(vided,)g(the)g(v)m(alue)h(returned)f(b)o(y)f Fw +(when-port-readable)e FF(is)37 1979 y(unde\014ned.)22 +b(Otherwise,)16 b(it)f(returns)g(the)h(handler)g(curren)o(tly)g(asso)q +(ciated)f(to)g FD(p)n(ort)t FF(.)37 2033 y(The)j(example)g(b)q(elo)o(w) +g(sho)o(ws)e(a)h(simple)i(usage)e(of)f(the)h Fw(when-port-readable)e +FF(pro)q(cedure:)25 b(the)17 b(com-)37 2083 y(mand)f +FD(cmd)k FF(is)c(run)f(with)h(its)f(output)g(redirected)h(in)g(a)f(pip) +q(e)i(asso)q(ciated)e(to)g(the)g FD(p)k FF(Sc)o(heme)c(p)q(ort.)125 +2190 y Fv(\(define)20 b(p)i(\(open-input-fil)o(e)d("|)i(cmd"\)\))125 +2239 y(\(when-port-reada)o(ble)e(p)386 2289 y(\(lambda\(\))430 +2339 y(\(let)i(\(\()g(l)h(\(read-line)d(p\)\)\))473 2389 +y(\(if)j(\(eof-object?)d(l\))561 2439 y(\(begin)604 2488 +y(;;)i(delete)g(handler)604 2538 y(\(when-port-readabl)o(e)e(p)j(#f\)) +604 2588 y(;;)f(and)h(close)e(port)604 2638 y(\(close-input-port)e +(p\)\))561 2688 y(\(format)i(#t)h("Line)g(read:)g(~A\\n")g(l\)\)\)\)\)) +p eop %%Page: 26 26 -26 25 bop 75 47 a FC(26)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a FG(6.12)56 b(Tk)18 b(commands)75 -257 y FD(As)e(w)o(e)f(men)o(tioned)f(in)g(the)i(in)o(tro)q(duction,)f -Fz(STk)g FD(can)h(easily)e(comm)o(unicate)f(with)i(the)g(Tk)g(to)q -(olkit.)21 b(All)14 b(the)75 306 y(commands)f(de\014ned)k(b)o(y)e(the)i -(Tk)e(to)q(olkit)g(are)h(visible)f(as)g Fu(Tk-command)p -FD(s,)f(a)i(basic)f(t)o(yp)q(e)i(recognized)f(b)o(y)g(the)75 -356 y(in)o(terpreter.)21 b Fu(Tk-command)p FD(s)13 b(can)i(b)q(e)g -(called)f(lik)o(e)f(regular)i(sc)o(heme)f(pro)q(cedures,)j(serving)d -(as)h(an)f(en)o(try)h(p)q(oin)o(t)75 406 y(in)o(to)e(the)i(Tk)e -(library)m(.)75 488 y Fl(Note:)50 b Fs(Some)18 b Ft(Tk-comman)o(d)p -Fs(s)c(can)k(dynamically)j(create)c(other)h Ft(Tk-comman)o(d)p -Fs(s.)27 b(F)m(or)17 b(instance,)j(execution)f(of)e(the)75 -533 y(expression)153 615 y Ft(\(label)h('.lab\))75 746 -y Fs(will)11 b(create)f(a)g(new)g Ft(Tk-command)c Fs(called)12 -b(\\)p Fl(.lab)q Fs(".)k(This)10 b(new)g(ob)r(ject,)h(whic)o(h)f(w)o -(as)g(created)g(b)o(y)h(a)e(primitiv)o(e)k Ft(Tk-comman)o(d)p -Fs(,)75 795 y(will)i(b)q(e)e(called)i(a)e Fl(widget)r -Fs(.)75 846 y Fl(Note:)31 b Fs(When)12 b(a)f(new)h(widget)g(is)g -(created,)f(it)h(captures)g(its)g(creation)h(en)o(vironmen)o(t.)18 -b(This)12 b(p)q(ermits)g(to)g(ha)o(v)o(e)f(bindings)75 -896 y(whic)o(h)j(access)f(v)n(ariables)j(in)d(the)h(scop)q(e)f(of)g -(the)g(widget)h(creation)g(call)h(\(see)e(6.17\).)75 -1003 y Fu(\(tk-command?)19 b FB(obj)6 b Fu(\))1220 b -FD(pro)q(cedure)75 1073 y(Returns)15 b Fu(#t)e FD(if)g -FB(obj)20 b FD(is)14 b(a)f Fu(Tk-command)p FD(,)f(otherwise)j(returns)g -Fu(#f)p FD(.)153 1154 y Ft(\(tk-command)o(?)h(label\))350 -1200 y Fs(=)-6 b Fn(\))19 b Ft(#t)153 1246 y(\(begin)f(\(label)f -('.lab\))g(\(tk-comman)o(d?)f(.lab\)\))350 1291 y Fs(=)-6 -b Fn(\))19 b Ft(#t)153 1337 y(\(tk-command)o(?)d(12\))350 -1383 y Fs(=)-6 b Fn(\))19 b Ft(#f)75 1573 y Fu(\(widget?)h -FB(obj)6 b Fu(\))1307 b FD(pro)q(cedure)75 1643 y(Returns)20 -b Fu(#t)f FD(if)f FB(obj)25 b FD(is)19 b(a)g(widget,)h(otherwise)g -(returns)h Fu(#f)p FD(.)34 b(A)19 b(widget)g(is)g(a)g -Fu(Tk-command)e FD(created)k(b)o(y)e(a)75 1689 y(primitiv)o(e)12 -b Fu(Tk-command)f FD(suc)o(h)k(as)f Fu(button)p FD(,)e -Fu(label)p FD(,)h Fu(menu)p FD(,)f(etc.)153 1770 y Ft(\(widget?)17 -b(label\))350 1816 y Fs(=)-6 b Fn(\))19 b Ft(#f)153 1861 -y(\(begin)f(\(label)f('.lab\))g(\(widget?)g(.lab\)\))350 -1907 y Fs(=)-6 b Fn(\))19 b Ft(#t)153 1953 y(\(widget?)e(12\))350 -1998 y Fs(=)-6 b Fn(\))19 b Ft(#f)75 2189 y Fu(\(widget->string)g -FB(widget)t Fu(\))1095 b FD(pro)q(cedure)75 2259 y(Returns)15 -b(the)f(widget)g(name)f(of)g FB(widget)k FD(as)d(a)g(string.)153 -2340 y Ft(\(begin)k(\(label)f('.lab\))g(\(widget->s)o(tri)o(ng)f -(.lab\)\))350 2386 y Fs(=)-6 b Fn(\))19 b Ft(".lab")75 -2576 y Fu(\(string->widget)g FB(str)t Fu(\))1160 b FD(pro)q(cedure)75 -2646 y(Returns)15 b(the)f(widget)g(whose)g(name)f(is)h -FB(str)j FD(if)d(it)f(exists;)h(otherwise)h(returns)g -Fu(#f)p FD(.)153 2728 y Ft(\(begin)j(\(label)f('.lab\))g(\(string->w)o -(idg)o(et)f(".lab"\)\))350 2773 y Fs(=)-6 b Fn(\))19 -b Ft(the)g(Tk-comma)o(nd)d(named)i(".lab")p eop +26 25 bop 37 45 a FE(26)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a Fw(\(when-port-writable)22 b +FD(p)n(ort)i(hand)r(ler)5 b Fw(\))884 b FF(pro)q(cedure)37 +247 y Fw(\(when-port-writable)22 b FD(p)n(ort)t Fw(\))1058 +b FF(pro)q(cedure)37 327 y(When)15 b FD(p)n(ort)j FF(is)d(ready)e(for)h +(writing,)g FD(hand)r(ler)5 b FF(,)14 b(whic)o(h)g(m)o(ust)g(b)q(e)g(a) +g(th)o(unk,)g(is)g(called)h(lea)o(ving)g(the)f(curren)o(t)37 +384 y(ev)m(aluation)j(susp)q(ended.)23 b(When)16 b FD(hand)r(ler)k +FF(execution)d(is)f(terminated,)f(normal)h(ev)m(aluation)g(is)g +(resumed)37 440 y(at)i(its)g(susp)q(ension)h(p)q(oin)o(t.)29 +b(If)18 b(the)g(sp)q(ecial)i(v)m(alue)f Fw(#f)f FF(is)g(pro)o(vided)h +(as)f FD(hand)r(ler)5 b FF(,)18 b(the)g(curren)o(t)g(handler)37 +497 y(for)f FD(p)n(ort)23 b FF(is)18 b(deleted.)28 b(If)18 +b(a)f(handler)i(is)f(pro)o(vided,)g(the)g(v)m(alue)h(returned)f(b)o(y)f +Fw(when-port-writable)e FF(is)37 553 y(unde\014ned.)22 +b(Otherwise,)16 b(it)f(returns)g(the)h(handler)g(curren)o(tly)g(asso)q +(ciated)f(to)g FD(p)n(ort)t FF(.)37 673 y Fw(\(load)24 +b FD(\014lename)s Fw(\))1305 b FF(pro)q(cedure)37 729 +y Fw(\(load)24 b FD(\014lename)e(mo)n(dule)s Fw(\))1145 +b FF(pro)q(cedure)37 810 y(The)14 b(\014rst)e(form)h(is)g(iden)o(tical) +i(to)e FD(R)637 793 y FA(4)649 810 y Fz(RS)s FF(.)18 +b(The)c(second)f(one)h(loads)f(the)g(con)o(ten)o(t)f(of)h +FD(\014lename)i FF(in)f(the)f(giv)o(en)37 866 y FD(mo)n(dule)20 +b FF(en)o(vironmen)o(t.)h Fn(Note:)39 b Fu(The)14 b Fn(lo)n(ad)19 +b Fu(primitiv)o(e)12 b(has)i(b)q(een)i(extended)g(to)e(allo)o(w)f +(loading)f(of)i(ob)r(ject)h(\014les,)37 923 y(though)d(this)g(is)g(not) +g(implemen)o(ted)e(on)i(all)f(systems.)17 b(This)12 b(extension)h(uses) +g(dynamic)e(loading)f(on)i(systems)g(whic)o(h)37 979 +y(supp)q(ort)j(it)233 964 y Fm(3)251 979 y Fu(.)j(See)d([4)o(])f(for)f +(more)g(details.)37 1099 y Fw(\(try-load)23 b FD(\014lename)s +Fw(\))1210 b FF(pro)q(cedure)37 1156 y Fw(\(try-load)23 +b FD(\014lename)g(mo)n(dule)s Fw(\))1049 b FF(pro)q(cedure)37 +1236 y(T)l(ries)20 b(to)e(load)h(the)g(\014le)h(named)f +FD(\014lename)s FF(.)30 b(If)19 b FD(\014lename)j FF(exists)d(and)g(is) +g(readable,)h(it)f(is)h(loaded,)g(and)37 1292 y Fw(try-load)e +FF(returns)g Fw(#t)p FF(.)30 b(Otherwise,)20 b(the)f(result)g(of)f(the) +h(call)h(is)f Fw(#f)p FF(.)30 b(The)19 b(second)g(form)f(of)g +FD(try-lo)n(ad)37 1349 y FF(tries)e(to)e(load)i(the)f(con)o(ten)o(t)g +(of)g FD(\014lename)i FF(in)f(the)f(giv)o(en)h FD(mo)n(dule)j +FF(en)o(vironmen)o(t.)37 1469 y Fw(\(autoload)k FD(\014lename)g +Fo(h)p FF(sym)o(b)q(ol)623 1476 y FA(1)643 1469 y Fo(i)g(h)p +FF(sym)o(b)q(ol)842 1476 y FA(2)862 1469 y Fo(i)h Fz(:)8 +b(:)g(:)d Fw(\))757 b FF(syn)o(tax)37 1549 y(De\014nes)22 +b Fo(h)p FF(sym)o(b)q(ol)p Fo(i)p FF(s)e(as)h(autoload)f(sym)o(b)q(ols) +h(asso)q(ciated)g(to)f(\014le)i FD(\014lename)s FF(.)36 +b(First)21 b(ev)m(aluation)h(of)e(an)37 1606 y(autoload)f(sym)o(b)q(ol) +h(will)g(cause)g(the)f(loading)h(of)f(its)g(asso)q(ciated)g(\014le)h +(in)g(the)f(mo)q(dule)i(en)o(vironmen)o(t)e(in)37 1662 +y(whic)o(h)d(the)g(autoload)e(w)o(as)h(done.)20 b FD(Filename)d +FF(m)o(ust)e(pro)o(vide)g(a)g(de\014nition)i(for)e(the)g(sym)o(b)q(ol)g +(whic)o(h)h(lead)37 1718 y(to)f(its)g(loading,)h(otherwise)g(an)f +(error)f(is)i(signaled.)37 1838 y Fw(\(autoload?)23 b +FD(symb)n(ol)g(mo)n(dule)s Fw(\))1059 b FF(pro)q(cedure)37 +1919 y(Returns)16 b Fw(#t)f FF(if)h FD(symb)n(ol)j FF(is)d(an)f +(autoload)g(sym)o(b)q(ol)g(in)h FD(mo)n(dule)j FF(en)o(vironmen)o(t)c +(;)g(returns)g Fw(#f)g FF(otherwise.)37 2039 y Fw(\(require)23 +b FD(string)t Fw(\))1285 b FF(pro)q(cedure)37 2095 y +Fw(\(provide)23 b FD(string)t Fw(\))1285 b FF(pro)q(cedure)37 +2152 y Fw(\(provided?)23 b FD(string)t Fw(\))1237 b FF(pro)q(cedure)37 +2232 y Fw(Require)21 b FF(loads)h(the)g(\014le)h(whose)e(name)h(is)g +FD(string)j FF(if)d(it)g(w)o(as)f(not)g(previously)i(\\pro)o(vided".)p +Fw(Provide)37 2288 y FF(p)q(ermits)17 b(to)e(store)g +FD(string)k FF(in)e(the)f(list)h(of)e(already)h(pro)o(vided)h(\014les.) +23 b(Pro)o(viding)16 b(a)g(\014le)h(p)q(ermits)f(to)f(a)o(v)o(oid)37 +2345 y(subsequen)o(t)h(loads)f(of)g(this)h(\014le.)k +Fw(Provided?)14 b FF(returns)h Fw(#t)g FF(if)g FD(string)k +FF(w)o(as)14 b(already)h(pro)o(vided;)h(it)f(returns)37 +2401 y Fw(#f)g FF(otherwise.)37 2521 y Fw(\(transcript-on)22 +b FD(\014lename)s Fw(\))1091 b FF(pro)q(cedure)37 2578 +y Fw(\(transcript-off)n(\))1260 b FF(pro)q(cedure)37 +2658 y(Not)15 b(implemen)o(ted.)p 37 2699 735 2 v 89 +2726 a Ft(3)107 2742 y Fs(Curren)o(t)23 b(v)o(ersion)i(\(3.99\))f(allo) +o(ws)h(dynamic)g(loading)h(only)f(on)f(some)g(platforms:)39 +b(SunOs)24 b(4.1.x,)i(SunOs)e(5.x,)37 2787 y(NetBSD)14 +b(1.0,)e(Lin)o(ux)j(2.0,)d(HPUX,)g(Irix)i(5.3)p eop %%Page: 27 27 -27 26 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(27)p 75 64 1763 2 v 75 179 a Fu(\(widget-name)19 b -FB(widget)t Fu(\))1161 b FD(pro)q(cedure)75 248 y(Returns)15 -b(the)f(widget)g(name)f(of)g FB(widget)k FD(as)d(a)g(sym)o(b)q(ol.)153 -329 y Ft(\(begin)k(\(label)f('.lab\))g(\(widget->n)o(ame)f(.lab\)\))350 -374 y Fs(=)-6 b Fn(\))19 b Ft(.lab)75 562 y Fu(\(set-widget-data!)f -FB(widget)k(expr)t Fu(\))953 b FD(pro)q(cedure)75 636 -y Fu(Set-widget-data!)13 b FD(asso)q(ciates)18 b(arbitrary)e(data)g -(with)g(a)g FB(widget)t FD(.)26 b(The)17 b(system)f(mak)o(es)f(no)h -(assumptions)75 685 y(ab)q(out)f(the)h(t)o(yp)q(e)g(of)f -Fu(expr)p FD(;)f(the)i(data)f(is)g(for)g(programmer)e(con)o(v)o -(enience)k(only)m(.)k(As)15 b(sho)o(wn)h(b)q(elo)o(w,)f(it)g(could)75 -735 y(b)q(e)g(used)f(as)g(a)g(kind)f(of)h(prop)q(ert)o(y)g(list)g(for)f -(widgets.)75 843 y Fu(\(get-widget-data)18 b FB(widget)t -Fu(\))1074 b FD(pro)q(cedure)75 913 y(Returns)15 b(the)f(data)g -(previously)f(asso)q(ciated)i(with)f FB(widget)j FD(if)c(it)h(exists;)g -(otherwise)g(returns)i Fu(#f)p FD(.)153 993 y Ft(\(begin)212 -1039 y(\(set-widge)o(t-d)o(ata)o(!)g(.w)j('\(:mapped)d(#t)j(:geometry)d -("10x50"\)\))212 1084 y(\(get-keywo)o(rd)g(:mapped)h(\(get-widge)o(t-d) -o(at)o(a)g(.w\)\)\))350 1130 y Fs(=)-6 b Fn(\))19 b Ft(#t)75 -1329 y FG(6.13)56 b(Mo)r(dules)75 1407 y Fz(STk)18 b -FD(mo)q(dules)e(can)i(b)q(e)h(used)f(to)g(organize)f(a)g(program)f(in)o -(to)h(separate)i(en)o(vironmen)o(ts)e(\(or)p FB(name)i(sp)n(ac)n(es)s -FD(\).)75 1456 y(Mo)q(dules)e(pro)o(vide)e(a)h(clean)h(w)o(a)o(y)e(to)h -(organize)g(and)g(enforce)h(the)g(barriers)g(b)q(et)o(w)o(een)h(the)e -(comp)q(onen)o(ts)g(of)g(a)75 1506 y(program.)75 1556 -y Fz(STk)g FD(pro)o(vides)g(a)f(simple)f(mo)q(dule)g(system)i(whic)o(h) -f(is)h(largely)f(inspired)h(from)d(the)k(one)f(of)f(T)m(ung)g(and)g -(Dyb-)75 1606 y(vig)h(exp)q(osed)i(in)f([5)o(].)27 b(As)18 -b(their)f(mo)q(dules)f(system,)h Fz(STk)h FD(mo)q(dules)e(are)h -(de\014ned)h(to)f(b)q(e)h(easily)e(used)i(in)f(an)75 -1656 y(in)o(teractiv)o(e)d(en)o(vironmen)o(t.)75 1762 -y Fu(\(define-module)19 b FB(name)j Fm(h)p FD(b)q(o)q(dy)p -Fm(i)q Fu(\))1052 b FD(syn)o(tax)75 1836 y FB(De\014ne-mo)n(dule)21 -b FD(ev)n(aluates)c(the)g(expressions)i(whic)o(h)d(are)i(in)e -Fm(h)p FD(b)q(o)q(dy)p Fm(i)h FD(in)f(the)i(en)o(vironmen)o(t)d(of)i -(the)g(mo)q(dule)75 1886 y FB(name)t FD(.)g FB(name)e -FD(m)o(ust)c(b)q(e)h(a)g(v)n(alid)e(sym)o(b)q(ol.)15 -b(If)d(this)f(sym)o(b)q(ol)f(has)i(not)g(already)f(b)q(een)i(used)g(to) -e(de\014ne)i(a)e(mo)q(dule,)75 1936 y(a)i(new)g(mo)q(dule,)e(named)h -FB(name)s FD(,)h(is)f(created.)20 b(Otherwise,)14 b Fm(h)p -FD(b)q(o)q(dy)p Fm(i)f FD(is)g(ev)n(aluated)f(in)g(the)i(en)o(vironmen) -o(t)e(of)g(the)75 1986 y(\(old\))h(mo)q(dule)g FB(name)424 -1970 y Fy(3)442 1986 y FD(.)75 2032 y(De\014nitions)i(done)g(in)g(a)g -(mo)q(dule)f(are)h(lo)q(cal)g(to)g(the)h(mo)q(dule)d(and)i(do)g(not)g -(in)o(teract)h(with)f(the)h(de\014nitions)f(of)75 2077 -y(other)g(mo)q(dules.)h(Consider)f(the)f(follo)o(wing)e(de\014nitions,) -193 2158 y Ft(\(define-m)o(od)o(ule)k(M1)252 2203 y(\(define)g(a)k -(1\)\))193 2295 y(\(define-m)o(od)o(ule)c(M2)232 2340 -y(\(define)h(a)i(2\))232 2386 y(\(define)e(b)i(\(*)g(2)g(x\)\)\))75 -2516 y FD(Here,)c(t)o(w)o(o)e(mo)q(dules)g(are)h(de\014ned)h(and)e -(they)i(b)q(oth)f(bind)f(the)h(sym)o(b)q(ol)e Fu(a)i -FD(to)g(a)f(v)n(alue.)k(Ho)o(w)o(ev)o(er,)d(since)h Fu(a)e -FD(has)75 2565 y(b)q(een)i(de\014ned)g(in)e(t)o(w)o(o)h(distincts)g(mo) -q(dules)f(they)i(denote)f(t)o(w)o(o)g(di\013eren)o(t)h(lo)q(cations.)75 -2616 y(The)e(\\)p Fu(STk)p FD(")f(mo)q(dule,)f(whic)o(h)i(is)g -(prede\014ned,)h(is)f(a)f(sp)q(ecial)h(mo)q(dule)f(whic)o(h)h(con)o -(tains)f(all)g(the)h FB(glob)n(al)h(variables)75 2665 -y FD(of)h(a)g FB(R)190 2650 y Fy(4)202 2665 y Fx(RS)j -FD(program.)k(A)15 b(sym)o(b)q(ol)f(de\014ned)j(in)e(the)h -Fu(STk)f FD(mo)q(dule,)f(if)g(not)i(hidden)f(b)o(y)h(a)f(lo)q(cal)g -(de\014nition,)g(is)p 75 2701 705 2 v 121 2728 a Fr(3)139 -2740 y Fq(In)9 b(fact)h Fo(define-mod)o(ule)d Fq(on)j(a)g(giv)o(en)f -(name)g(de\014nes)g(a)h(new)h(mo)q(dule)d(only)h(the)h(\014rst)g(time)f -(it)h(is)h(in)o(v)o(ok)o(ed)d(on)i(this)f(name.)14 b(By)75 -2779 y(this)d(w)o(a)o(y)m(,)g(in)o(teactiv)o(ely)d(reloading)h(a)j(mo)q -(dule)d(do)q(es)i(not)f(de\014ne)g(a)i(new)f(en)o(tit)o(y)m(,)f(and)g -(the)h(other)f(mo)q(dules)g(whic)o(h)h(use)f(it)i(are)f(not)75 -2819 y(altered.)p eop +27 26 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(27)p 37 64 1838 2 v 37 190 a Fw(\(open-file)23 b FD(\014lename)g(mo)n +(de)s Fw(\))1061 b FF(pro)q(cedure)37 271 y(Op)q(ens)19 +b(the)e(\014le)g(whose)g(name)g(is)g FD(\014lename)j +FF(with)d(the)g(sp)q(eci\014ed)i FD(mo)n(de)s FF(.)25 +b FD(Mo)n(de)20 b FF(m)o(ust)c(b)q(e)i(\\r")e(to)g(op)q(en)37 +327 y(for)h(reading)g(or)g(\\w")f(to)g(op)q(en)i(for)e(writing.)26 +b(If)17 b(the)g(\014le)h(can)f(b)q(e)h(op)q(ened,)g FD(op)n(en-\014le)h +FF(returns)e(the)g(p)q(ort)37 384 y(asso)q(ciated)f(with)g(the)g(giv)o +(en)f(\014le,)i(otherwise)e(it)h(returns)f Fw(#f)p FF(.)21 +b(Here)15 b(again,)h(the)f(\\magic")g(string)h Fw("|)23 +b(``)37 440 y FF(p)q(ermit)16 b(to)f(op)q(en)h(a)f(pip)q(e)h(p)q(ort.) +37 558 y Fw(\(close-port)23 b FD(p)n(ort)t Fw(\))1249 +b FF(pro)q(cedure)37 639 y(Closes)13 b FD(p)n(ort)5 b +FF(.)19 b(If)12 b FD(p)n(ort)17 b FF(denotes)c(a)e(string)i(p)q(ort,)f +(further)g(reading)h(or)f(writing)g(on)h(this)f(p)q(ort)g(is)h(disallo) +o(w)o(ed.)37 814 y Fw(\(transcript-on)22 b FD(\014lename)s +Fw(\))1091 b FF(pro)q(cedure)37 870 y Fw(\(transcript-off)n(\))1260 +b FF(pro)q(cedure)37 950 y(Not)15 b(implemen)o(ted.)37 +1069 y Fw(\(port->string)23 b FD(p)n(ort)t Fw(\))1201 +b FF(pro)q(cedure)37 1125 y Fw(\(port->list)23 b FD(r)n(e)n(ader)h(p)n +(ort)t Fw(\))1103 b FF(pro)q(cedure)37 1182 y Fw(\(port->string-list)22 +b FD(p)n(ort)t Fw(\))1082 b FF(pro)q(cedure)37 1238 y +Fw(\(port->sexp-list)22 b FD(p)n(ort)t Fw(\))1130 b FF(pro)q(cedure)37 +1318 y(Those)14 b(pro)q(cedures)g(are)f(utilit)o(y)h(for)e(generally)j +(parsing)e(input)h(streams.)19 b(Their)14 b(sp)q(eci\014cation)h(has)e +(b)q(een)37 1375 y(stolen)j(from)f Fw(scsh)p FF(.)37 +1425 y Fw(Port->string)f FF(reads)h(the)g(input)i(p)q(ort)d(un)o(til)j +(eof,)d(then)i(returns)f(the)g(accum)o(ulated)h(string.)125 +1513 y Fv(\(port->string)j(\(open-input-file)f("|)k(\(echo)e(AAA;)h +(echo)g(BBB\)"\)\))735 1563 y Fu(=)-7 b Fp(\))22 b Fv("AAA\\nBBB\\n") +125 1612 y(\(define)e(exec)299 1662 y(\(lambda)g(\(command\))364 +1712 y(\(call-with-input-fi)o(le)430 1762 y(\(string-append)f("|)i(")h +(command\))e(port->string\)\)\))125 1861 y(\(exec)g("ls)i(-l"\))304 +b Fu(=)-7 b Fp(\))22 b Fv(a)f(string)g(which)f(contains)h(the)g(result) +f(of)i("ls)f(-l")37 1999 y Fw(Port->list)15 b FF(uses)g(the)h +FD(r)n(e)n(ader)k FF(function)c(to)f(rep)q(eatedly)i(read)e(ob)s(jects) +g(from)g FD(p)n(ort)t FF(.)21 b(Thes)15 b(ob)s(jects)g(are)37 +2049 y(accum)o(ulated)h(in)g(a)f(list)h(whic)o(h)g(is)g(returned)g(up)q +(on)g(eof.)125 2137 y Fv(\(port->list)j(read-line)h(\(open-input-file)f +("|)i(\(echo)g(AAA;)g(echo)g(BBB\)"\)\))735 2187 y Fu(=)-7 +b Fp(\))22 b Fv(\("AAA")e("BBB"\))37 2324 y Fw(Port->string-list)12 +b FF(reads)i(the)g(input)h(p)q(ort)e(line)j(b)o(y)e(line)i(un)o(til)f +(eof,)e(then)h(returns)g(the)g(accum)o(ulated)37 2374 +y(list)j(of)d(lines.)22 b(This)16 b(pro)q(cedure)g(is)f(de\014ned)i(as) +125 2462 y Fv(\(define)j(port->string-list)e(\(lambda)j +(\(p\)\(port->list)e(read-line)g(p\)\)\))37 2600 y Fw(Port->sexp-list) +10 b FF(rep)q(eatedly)i(reads)f(data)g(from)g(the)g(p)q(ort)g(un)o(til) +h(eof,)g(then)g(returns)f(the)g(accum)o(ulated)37 2650 +y(list)17 b(of)d(items.)20 b(This)c(pro)q(cedure)g(is)g(de\014ned)h(as) +125 2738 y Fv(\(define)j(port->sexp-list)f(\(lambda)h(\(p\))h +(\(port->list)f(read)h(p\)\)\))p eop %%Page: 28 28 -28 27 bop 75 47 a FC(28)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a FD(alw)o(a)o(ys)d(visible)g(from)f(inside)h(a)h -(mo)q(dule.)k(So,)11 b(in)g(the)i(previous)f(exemple,)f(the)h -Fu(x)f FD(sym)o(b)q(ol)f(refers)k(the)e Fu(x)f FD(sym)o(b)q(ol)75 -229 y(de\014ned)k(in)e(the)i Fu(STk)e FD(mo)q(dule.)75 -279 y(The)h(result)h(of)e FB(de\014ne-mo)n(dule)18 b -FD(is)c(unde\014ned.)75 387 y Fu(\(find-module)19 b FB(name)s -Fu(\))1179 b FD(pro)q(cedure)75 437 y Fu(\(find-module)19 -b FB(name)k(default)t Fu(\))1034 b FD(pro)q(cedure)75 -511 y Fz(STk)16 b FD(mo)q(dules)f(are)h(\014rst)g(class)g(ob)r(jects)h -(and)e Fu(find-module)f FD(returns)j(the)f(mo)q(dule)e(asso)q(ciated)j -(to)e FB(name)k FD(if)75 561 y(it)14 b(exists.)22 b(If)14 -b(there)i(is)f(no)f(mo)q(dule)f(asso)q(ciated)j(to)e -FB(name)t FD(,)h(an)f(error)i(is)e(signaled)h(if)e(no)i -FB(default)j FD(is)d(pro)o(vided,)75 610 y(otherwise)g -Fu(find-module)c FD(returns)16 b(default.)75 719 y Fu(\(module?)k -FB(obje)n(ct)t Fu(\))1259 b FD(pro)q(cedure)75 788 y(Returns)15 -b Fu(#t)e FD(if)g FB(obje)n(ct)18 b FD(is)c(a)f(mo)q(dule)g(and)g -Fu(#f)h FD(otherwise.)193 869 y Ft(\(module?)i(\(find-modu)o(le)g -('STk\)\))350 915 y Fs(=)-6 b Fn(\))19 b Ft(#t)193 960 -y(\(module?)d('STk\))350 1006 y Fs(=)-6 b Fn(\))19 b -Ft(#f)193 1052 y(\(module?)d(1\))350 1097 y Fs(=)-6 b -Fn(\))19 b Ft(#f)75 1285 y Fu(\(export)h Fm(h)p FD(sym)o(b)q(ol)395 -1291 y Fy(1)412 1285 y Fm(i)i(h)p FD(sym)o(b)q(ol)596 -1291 y Fy(2)613 1285 y Fm(i)p FB(.)6 b(.)g(.)g Fu(\))1011 -b FD(syn)o(tax)75 1359 y(Sp)q(eci\014es)18 b(the)g(sym)o(b)q(ols)d -(whic)o(h)i(are)g(exp)q(orted)h(\(i.e.)26 b FB(visible)s -FD(\))16 b(outside)h(the)h(curren)o(t)g(mo)q(dule.)25 -b(By)17 b(default,)75 1409 y(sym)o(b)q(ols)g(de\014ned)j(in)f(a)g(mo)q -(dule)e(are)i(not)g(visible)f(outside)i(this)f(mo)q(dule,)f(excepted)j -(the)e(sym)o(b)q(ols)f(whic)o(h)75 1459 y(app)q(ear)c(in)g(an)f -Fu(export)g FD(clause.)75 1509 y(If)c(sev)o(eral)h Fu(export)f -FD(clauses)h(app)q(ear)h(in)e(a)g(mo)q(dule,)g(the)h(set)h(of)e(exp)q -(orted)i(sym)o(b)q(ols)d(is)h(determined)h(b)o(y)f FB(unioning)75 -1559 y FD(sym)o(b)q(ols)j(exp)q(orted)k(in)d(all)g(the)h -Fu(export)f FD(clauses.)75 1609 y(The)h(result)h(of)e -FB(exp)n(ort)18 b FD(is)c(unde\014ned.)75 1717 y Fu(\(import)20 -b Fm(h)p FD(mo)q(dule)399 1723 y Fy(1)417 1717 y Fm(i)i(h)p -FD(mo)q(dule)605 1723 y Fy(2)622 1717 y Fm(i)p FB(.)6 -b(.)g(.)g Fu(\))1002 b FD(syn)o(tax)75 1791 y(Sp)q(eci\014es)15 -b(the)g(mo)q(dules)d(whic)o(h)i(are)g(imp)q(orted)f(b)o(y)g(the)i -(curren)o(t)g(mo)q(dule.)h(Imp)q(orting)c(a)i(mo)q(dule)e(mak)o(es)h -(the)75 1841 y(sym)o(b)q(ols)h(it)i(exp)q(orts)h(visible)e(to)g(the)i -(imp)q(orter,)e(if)f(not)i(hidden)g(b)o(y)g(lo)q(cal)f(de\014nitions.) -23 b(When)16 b(a)g(sym)o(b)q(ol)e(is)75 1891 y(exp)q(orted)g(b)o(y)e -(sev)o(eral)h(of)f(the)h(imp)q(orted)e(mo)q(dules,)g(the)i(lo)q(cation) -f(denoted)h(b)o(y)f(this)h(sym)o(b)q(ol)d(in)i(the)h(imp)q(orter)75 -1941 y(mo)q(dule)k(corresp)q(ond)j(to)f(the)g(one)f(of)g(the)h(\014rst) -h(mo)q(dule)d(in)h(the)h(list)f(\()p Fm(h)p FD(mo)q(dule)1393 -1947 y Fy(1)1411 1941 y Fm(i)g(h)p FD(mo)q(dule)1595 -1947 y Fy(2)1613 1941 y Fm(i)p FD(.)6 b(.)h(.)f(\))33 -b(whic)o(h)75 1990 y(exp)q(ort)15 b(it.)75 2041 y(If)20 -b(sev)o(eral)g Fu(import)f FD(clauses)i(app)q(ear)g(in)f(a)f(mo)q -(dule,)h(the)h(set)g(of)e(imp)q(orted)h(mo)q(dules)f(is)h(determined)g -(b)o(y)75 2090 y(app)q(ending)14 b(the)g(v)n(arious)f(list)h(of)f(mo)q -(dules)g(in)g(their)i(apparition)d(order.)153 2180 y -Ft(\(define-mod)o(ul)o(e)17 b(M1)193 2225 y(\(export)g(a)i(b\))193 -2271 y(\(define)e(a)i('M1-a\))193 2317 y(\(define)e(b)i('M1-b\)\))153 -2408 y(\(define-mod)o(ul)o(e)e(M2)193 2454 y(\(export)g(b)i(c\))193 -2499 y(\(define)e(b)i('M2-b\))193 2545 y(\(define)e(c)i('M2-c\)\))153 -2636 y(\(define-mod)o(ul)o(e)e(M3)193 2682 y(\(import)g(M1)h(M2\))193 -2728 y(\(display)e(\(list)i(a)h(b)g(c\)\)\))350 2773 -y Fs(=)-6 b Fn(\))19 b Ft(displays)e(\(m1-a)g(m1-b)h(m2-c\))p -eop +28 27 bop 37 45 a FE(28)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a FF(F)l(or)10 b(instance,)i(the)f(follo)o(wing)g +(expression)g(giv)o(es)g(the)f(list)h(of)f(users)h(curren)o(tly)g +(connected)g(on)g(the)f(mac)o(hine)37 240 y(running)17 +b(the)e FB(STk)g FF(in)o(terpreter.)125 327 y Fv(\(port->sexp-list)j +(\(open-input-file)h("|)i(users"\)\))37 536 y FI(6.11)56 +b(Keyw)n(ords)37 622 y FF(Keyw)o(ords)16 b(are)e(sym)o(b)q(olic)j +(constan)o(ts)d(whic)o(h)i(ev)m(aluate)g(to)f(themselv)o(es.)21 +b(A)15 b(k)o(eyw)o(ord)f(m)o(ust)h(b)q(egin)i(with)37 +678 y(a)e(colon.)37 795 y Fw(\(keyword?)23 b FD(obj)7 +b Fw(\))1314 b FF(pro)q(cedure)37 875 y(Returns)16 b +Fw(#t)f FF(if)h FD(obj)22 b FF(is)15 b(a)g(k)o(eyw)o(ord,)f(otherwise)i +(returns)f Fw(#f)p FF(.)37 992 y Fw(\(make-keyword)23 +b FD(obj)7 b Fw(\))1218 b FF(pro)q(cedure)37 1066 y(Builds)17 +b(a)e(k)o(eyw)o(ord)f(from)g(the)h(giv)o(en)g FD(obj)7 +b FF(.)19 b FD(obj)j FF(m)o(ust)14 b(b)q(e)h(a)g(sym)o(b)q(ol)g(or)f(a) +h(string.)20 b(A)15 b(colon)g(is)g(automat-)37 1116 y(ically)i(prep)q +(ended.)125 1203 y Fv(\(make-keyword)i("test"\))343 1252 +y Fu(=)-7 b Fp(\))21 b Fv(:test)125 1302 y(\(make-keyword)e('test\))343 +1352 y Fu(=)-7 b Fp(\))21 b Fv(:test)125 1402 y(\(make-keyword)e +(":hello"\))343 1452 y Fu(=)-7 b Fp(\))21 b Fv(::hello)37 +1656 y Fw(\(keyword->string)h FD(keywor)n(d)5 b Fw(\))1050 +b FF(pro)q(cedure)37 1729 y(Returns)16 b(the)g(name)f(of)f +FD(keywor)n(d)21 b FF(as)15 b(a)f(string.)20 b(The)c(leading)g(colon)g +(is)g(included)h(in)g(the)e(result.)125 1816 y Fv(\(keyword->string)j +(:test\))343 1866 y Fu(=)-7 b Fp(\))21 b Fv(":test")37 +2070 y Fw(\(get-keyword)i FD(keywor)n(d)h(list)t Fw(\))1062 +b FF(pro)q(cedure)37 2126 y Fw(\(get-keyword)23 b FD(keywor)n(d)h(list) +f(default)t Fw(\))907 b FF(pro)q(cedure)37 2200 y FD(List)20 +b FF(m)o(ust)c(b)q(e)g(a)g(list)h(of)f(k)o(eyw)o(ords)f(and)i(their)f +(resp)q(ectiv)o(e)h(v)m(alues.)24 b Fw(Get-keyword)15 +b FF(scans)h(the)g FD(list)k FF(and)37 2250 y(returns)e(the)f(v)m(alue) +i(asso)q(ciated)e(with)h(the)g(giv)o(en)g FD(keywor)n(d)5 +b FF(.)26 b(If)18 b(the)f FD(keywor)n(d)23 b FF(do)q(es)17 +b(not)g(app)q(ear)h(in)g(an)37 2300 y(o)q(dd)g(p)q(osition)h(in)f +FD(list)s FF(,)g(the)f(sp)q(eci\014ed)i FD(default)j +FF(is)c(returned,)g(or)f(an)g(error)f(is)i(raised)g(if)g(no)f(default)h +(w)o(as)37 2349 y(sp)q(eci\014ed.)125 2436 y Fv(\(get-keyword)h(:one)i +('\(:one)f(1)i(:two)f(2\)\))343 2486 y Fu(=)-7 b Fp(\))21 +b Fv(1)125 2536 y(\(get-keyword)e(:four)i('\(:one)f(1)i(:two)f(2\))g +(#f\))343 2586 y Fu(=)-7 b Fp(\))21 b Fv(#f)125 2636 +y(\(get-keyword)e(:four)i('\(:one)f(1)i(:two)f(2\)\))343 +2685 y Fu(=)-7 b Fp(\))21 b Fi(error)p eop %%Page: 29 29 -29 28 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(29)p 75 64 1763 2 v 75 179 a Fl(Note:)34 b Fs(There)14 -b(is)g(no)g(kind)h(of)e Fl(tr)n(ansitivity)g Fs(in)i(mo)q(dule)g(imp)q -(ortations:)20 b(when)14 b(the)f(mo)q(dule)i Fk(C)i Fs(imp)q(orts)d -(the)g(mo)q(dule)75 229 y Fk(B)g Fs(whic)o(h)g(an)f(imp)q(orter)h(of)e -Fk(A)p Fs(,)g(the)h(sym)o(b)q(ols)h(of)f Fk(A)f Fs(are)h(not)g(visible) -i(from)d Fk(C)s Fs(,)h(except)g(b)o(y)g(explicitly)j(imp)q(orting)f -(the)e Fk(A)75 278 y Fs(mo)q(dule)f(from)e Fk(C)s Fs(.)33 -b Fl(Note:)c Fs(The)11 b(mo)q(dule)g Ft(STk)p Fs(,)e(whic)o(h)i(con)o -(tains)h(the)e Fl(glob)n(al)g(variables)g Fs(is)h(alw)o(a)o(ys)g -(implicitl)q(y)i(imp)q(orted)75 328 y(from)g(a)g(mo)q(dule.F)m -(urthermore,)h(this)g(mo)q(dule)h(is)e(alw)o(a)o(ys)h(placed)h(at)e -(the)g(end)g(of)g(the)g(list)h(of)f(imp)q(orted)i(mo)q(dules.)75 -415 y Fu(\(export-symbol)k FB(symb)n(ol)j(mo)n(dule)s -Fu(\))964 b FD(pro)q(cedure)75 489 y(Exp)q(orts)14 b -FB(symb)n(ol)k FD(from)12 b FB(mo)n(dule)s FD(.)18 b(This)13 -b(pro)q(cedure)i(can)f(b)q(e)g(useful,)f(when)h(debugging)f(a)g -(program,)f(to)h(mak)o(e)75 539 y(visible)g(a)g(giv)o(en)f(sym)o(b)q -(ol)g(without)h(reloading)f(or)h(rede\014ning)h(the)g(mo)q(dule)e -(where)i(this)f(sym)o(b)q(ol)f(w)o(as)h(de\014ned.)75 -676 y Fu(\(export-all-symbo)o(ls)m(\))1148 b FD(pro)q(cedure)75 -749 y(Exp)q(orts)14 b(all)e(the)i(sym)o(b)q(ols)e(of)h(curren)o(t)i(mo) -q(dule)d(.)18 b(If)13 b(sym)o(b)q(ols)f(are)i(added)f(to)h(the)g -(curren)o(t)g FB(mo)n(dule)j FD(after)d(the)75 799 y(call)f(to)h -Fu(export-all-symbol)o(s)p FD(,)c(they)15 b(are)f(automatically)d(exp)q -(orted.)75 849 y Fl(Note:)34 b Fs(The)14 b Ft(STk)e Fs(mo)q(dule)j(exp) -q(ort)f(all)h(the)e(sym)o(b)q(ols)i(whic)o(h)g(are)e(de\014ned)i(in)f -(it)g(\(i.e.)19 b Fl(glob)n(al)12 b(variables)i Fs(are)f(visible,)j(if) -75 898 y(not)d(hidden,)i(from)e(all)h(the)f(mo)q(dules)i(of)d(a)h -(program.)75 986 y Fu(\(with-module)19 b FB(mo)n(dule)j -Fm(h)p FD(expr)601 992 y Fy(1)621 986 y Fm(i)g(h)p FD(expr)754 -992 y Fy(2)773 986 y Fm(i)g FB(.)6 b(.)g(.)g Fu(\))829 -b FD(syn)o(tax)75 1059 y(Ev)n(aluates)17 b(the)h(expressions)g(of)f -Fm(h)p FD(expr)707 1065 y Fy(1)726 1059 y Fm(i)g(h)p -FD(expr)854 1065 y Fy(2)874 1059 y Fm(i)g FD(.)7 b(.)f(.)g(in)17 -b(the)h FB(mo)n(dule)i FD(en)o(vironmen)o(t.)27 b FB(Mo)n(dule)21 -b FD(m)o(ust)16 b(ha)o(v)o(e)75 1109 y(b)q(een)k(created)g(previously)f -(b)o(y)g(a)f Fu(define-module)p FD(.)30 b(The)20 b(result)f(of)f -Fu(with-module)f FD(is)i(the)g(result)h(of)e(the)75 1159 -y(ev)n(aluation)12 b(of)i(the)g(last)g Fm(h)p FD(expr)p -Fm(i)q FD(.)193 1230 y Ft(\(define-m)o(od)o(ule)i(M)232 -1275 y(\(define)h(a)i(1\))232 1321 y(\(define)e(b)i(2\)\))193 -1412 y(\(with-mod)o(ul)o(e)e(M)252 1458 y(\(+)h(a)i(b\)\))350 -1504 y Fs(=)-6 b Fn(\))19 b Ft(3)75 1662 y Fu(\(current-module)m(\)) -1235 b FD(pro)q(cedure)75 1731 y(Returns)15 b(the)f(curren)o(t-mo)q -(dule.)193 1797 y Ft(\(define-m)o(od)o(ule)i(M)252 1843 -y(...\))212 1934 y(\(with-modu)o(le)g(M)252 1980 y(\(cons)h(\(eq?)h -(\(current-m)o(odu)o(le)o(\))f(\(find-mod)o(ul)o(e)g('M\)\))369 -2025 y(\(eq?)h(\(current-m)o(odu)o(le)o(\))f(\(find-mod)o(ul)o(e)g -('STk\)\)\)\))350 2117 y Fs(=)-6 b Fn(\))19 b Ft(\(#t)g(.)g(#f\))75 -2270 y Fu(\(module-name)g FB(mo)n(dule)s Fu(\))1150 b -FD(pro)q(cedure)75 2343 y(Returns)15 b(the)f(name)f(\(a)h(sym)o(b)q -(ol\))e(asso)q(ciated)j(to)e(a)h FB(mo)n(dule)s FD(.)75 -2430 y Fu(\(module-imports)19 b FB(mo)n(dule)s Fu(\))1084 -b FD(pro)q(cedure)75 2504 y(Returns)15 b(the)f(list)g(mo)q(dules)e -(that)i FB(mo)n(dule)k FD(imp)q(orts.)75 2591 y Fu(\(module-exports)h -FB(mo)n(dule)s Fu(\))1084 b FD(pro)q(cedure)75 2664 y(Returns)15 -b(the)f(list)g(of)f(sym)o(b)q(ols)f(exp)q(orted)j(b)o(y)f -FB(mo)n(dule)s FD(.)75 2751 y Fu(\(module-symbols)19 -b FB(mo)n(dule)s Fu(\))1084 b FD(pro)q(cedure)75 2825 -y(Returns)15 b(the)f(list)g(sym)o(b)q(ols)e(that)i(ere)h(de\014ned)g -(in)e FB(mo)n(dule)t FD(.)p eop +29 28 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(29)p 37 64 1838 2 v 37 190 a FI(6.12)56 b(Tk)18 b(commands)37 +276 y FF(As)e(w)o(e)g(men)o(tioned)g(in)h(the)e(in)o(tro)q(duction,)i +FB(STk)e FF(can)h(easily)h(comm)o(unicate)f(with)g(the)f(Tk)h(to)q +(olkit.)22 b(All)37 333 y(the)16 b(commands)f(de\014ned)h(b)o(y)g(the)f +(Tk)g(to)q(olkit)g(are)g(visible)j(as)c Fw(Tk-command)p +FF(s,)g(a)h(basic)h(t)o(yp)q(e)f(recognized)37 389 y(b)o(y)h(the)g(in)o +(terpreter.)23 b Fw(Tk-command)p FF(s)14 b(can)j(b)q(e)f(called)i(lik)o +(e)f(regular)f(sc)o(heme)g(pro)q(cedures,)h(serving)f(as)g(an)37 +446 y(en)o(try)f(p)q(oin)o(t)h(in)o(to)f(the)g(Tk)g(library)l(.)37 +531 y Fn(Note:)37 b Fu(Some)13 b Fv(Tk-command)p Fu(s)g(can)h +(dynamically)d(create)k(other)g Fv(Tk-command)p Fu(s.)h(F)m(or)e +(instance,)g(execution)h(of)e(the)37 581 y(expression)125 +661 y Fv(\(label)20 b('.lab\))37 799 y Fu(will)f(create)j(a)e(new)h +Fv(Tk-command)d Fu(called)j(\\)p Fn(.lab)r Fu(".)37 b(This)20 +b(new)h(ob)r(ject,)h(whic)o(h)f(w)o(as)f(created)i(b)o(y)e(a)g +(primitiv)o(e)37 855 y Fv(Tk-command)p Fu(,)12 b(will)g(b)q(e)j(called) +e(a)h Fn(widget)s Fu(.)37 912 y Fn(Note:)51 b Fu(When)18 +b(a)f(new)h(widget)f(is)g(created,)i(it)e(captures)i(its)f(creation)f +(en)o(vironmen)o(t.)28 b(This)17 b(p)q(ermits)g(to)g(ha)o(v)o(e)37 +968 y(bindings)d(whic)o(h)g(access)h(v)n(ariables)e(in)h(the)g(scop)q +(e)h(of)f(the)g(widget)g(creation)g(call)f(\(see)j(6.17\).)37 +1083 y Fw(\(tk-command?)23 b FD(obj)7 b Fw(\))1242 b +FF(pro)q(cedure)37 1157 y(Returns)16 b Fw(#t)f FF(if)h +FD(obj)22 b FF(is)15 b(a)g Fw(Tk-command)p FF(,)f(otherwise)h(returns)g +Fw(#f)p FF(.)125 1238 y Fv(\(tk-command?)k(label\))343 +1287 y Fu(=)-7 b Fp(\))21 b Fv(#t)125 1337 y(\(begin)f(\(label)h +('.lab\))f(\(tk-command?)g(.lab\)\))343 1387 y Fu(=)-7 +b Fp(\))21 b Fv(#t)125 1437 y(\(tk-command?)e(12\))343 +1487 y Fu(=)-7 b Fp(\))21 b Fv(#f)37 1677 y Fw(\(widget?)i +FD(obj)7 b Fw(\))1338 b FF(pro)q(cedure)37 1750 y(Returns)17 +b Fw(#t)f FF(if)h FD(obj)23 b FF(is)16 b(a)g(widget,)h(otherwise)f +(returns)g Fw(#f)p FF(.)23 b(A)16 b(widget)g(is)h(a)f +Fw(Tk-command)f FF(created)h(b)o(y)g(a)37 1800 y(primitiv)o(e)h +Fw(Tk-command)d FF(suc)o(h)h(as)g Fw(button)p FF(,)f +Fw(label)p FF(,)g Fw(menu)p FF(,)g(etc.)125 1881 y Fv(\(widget?)20 +b(label\))343 1931 y Fu(=)-7 b Fp(\))21 b Fv(#f)125 1980 +y(\(begin)f(\(label)h('.lab\))f(\(widget?)g(.lab\)\))343 +2030 y Fu(=)-7 b Fp(\))21 b Fv(#t)125 2080 y(\(widget?)f(12\))343 +2130 y Fu(=)-7 b Fp(\))21 b Fv(#f)37 2320 y Fw(\(widget->string)h +FD(widget)t Fw(\))1108 b FF(pro)q(cedure)37 2393 y(Returns)16 +b(the)g(widget)f(name)g(of)g FD(widget)20 b FF(as)15 +b(a)f(string.)125 2474 y Fv(\(begin)20 b(\(label)h('.lab\))f +(\(widget->string)f(.lab\)\))343 2524 y Fu(=)-7 b Fp(\))21 +b Fv(".lab")37 2714 y Fw(\(string->widget)h FD(str)5 +b Fw(\))1178 b FF(pro)q(cedure)37 2787 y(Returns)16 b(the)g(widget)f +(whose)g(name)g(is)h FD(str)k FF(if)c(it)f(exists;)g(otherwise)h +(returns)f Fw(#f)p FF(.)p eop %%Page: 30 30 -30 29 bop 75 47 a FC(30)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a FG(6.14)56 b(En)n(vironmen)n(ts)75 -255 y FD(En)o(vironmen)o(ts)11 b(are)h(\014rst)g(class)g(ob)r(jects)h -(in)e(STk.)17 b(The)c(follo)o(wing)c(primitiv)o(es)g(are)j(de\014ned)h -(on)f(en)o(vironmen)o(ts.)75 357 y Fu(\(environment?)19 -b FB(obj)6 b Fu(\))1198 b FD(pro)q(cedure)75 431 y(Returns)15 -b Fu(#t)e FD(if)g FB(obj)20 b FD(is)14 b(an)f(en)o(vironmen)o(t,)g -(otherwise)i(returns)g Fu(#f)p FD(.)75 522 y Fu(\(the-environment)m(\)) -1213 b FD(pro)q(cedure)75 596 y(Returns)15 b(the)f(curren)o(t)i(en)o -(vironmen)o(t.)75 687 y Fu(\(global-environme)o(nt)m(\))1148 -b FD(pro)q(cedure)75 761 y(Returns)15 b(the)f(\\global")e(en)o -(vironmen)o(t)h(\(i.e.)k(the)e(toplev)o(el)e(en)o(vironmen)o(t\).)75 -852 y Fu(\(parent-environme)o(nt)19 b FB(env)t Fu(\))1061 -b FD(pro)q(cedure)75 926 y(Returns)20 b(the)f(paren)o(t)g(en)o -(vironmen)o(t)f(of)g FB(env)5 b FD(.)33 b(If)18 b(en)o(v)h(is)g(the)g -(\\global")e(en)o(vironmen)o(t)g(\(i.e.)32 b(the)20 b(toplev)o(el)75 -975 y(en)o(vironmen)o(t\),)12 b Fu(parent-environment)f -FD(returns)k Fu(#f)p FD(.)75 1067 y Fu(\(environment->lis)o(t)k -FB(envir)n(onment)t Fu(\))920 b FD(pro)q(cedure)75 1136 -y(Returns)15 b(a)e(list)h(of)f FB(a-lists)p FD(,)g(represen)o(ting)i -(the)g(bindings)e(in)h FB(envir)n(onment)t FD(.)k(Eac)o(h)d -FB(a-list)e FD(describ)q(es)j(one)e(lev)o(el)75 1182 -y(of)f(bindings,)g(with)h(the)g(innermost)f(lev)o(el)h(coming)e -(\014rst.)153 1251 y Ft(\(define)17 b(E)j(\(let)e(\(\(a)g(1\))h(\(b)g -(2\)\))389 1297 y(\(let)f(\(\(c)g(3\)\))428 1342 y(\(the-envir)o(on)o -(men)o(t\))o(\)\)\))153 1434 y(\(car)h(\(environ)o(men)o(t->)o(li)o(st) -d(E\)\))j Fs(=)-6 b Fn(\))19 b Ft(\(\(c)g(.)g(3\)\))153 -1525 y(\(cadr)f(\(environme)o(nt-)o(>l)o(ist)e(E\)\))p -Fs(=)-6 b Fn(\))18 b Ft(\(\(b)h(.)g(2\))g(\(a)f(.)i(1\)\))75 -1685 y Fu(\(procedure-enviro)o(nment)e FB(pr)n(o)n(c)n(e)n(dur)n(e)s -Fu(\))890 b FD(pro)q(cedure)75 1755 y(Returns)10 b(the)g(en)o(vironmen) -o(t)e(asso)q(ciated)i(with)f FB(pr)n(o)n(c)n(e)n(dur)n(e)s -FD(.)16 b Fu(Procedure-environme)o(nt)6 b FD(returns)11 -b Fu(#f)e FD(if)f FB(pr)n(o)n(c)n(e)n(dur)n(e)75 1800 -y FD(is)14 b(not)g(a)f(closure.)153 1869 y Ft(\(define)k(foo)i(\(let)f -(\(\(a)g(1\)\))h(\(lambda)e(\(\))i(a\)\)\))153 1915 y(\(car)g -(\(environ)o(men)o(t->)o(li)o(st)330 1961 y(\(procedure)o(-e)o(nvi)o -(ro)o(nme)o(nt)d(foo\)\)\))703 2006 y Fs(=)-6 b Fn(\))19 -b Ft(\(\(a)g(.)g(1\)\))75 2167 y Fu(\(module-environme)o(nt)g -FB(mo)n(dule)s Fu(\))997 b FD(pro)q(cedure)75 2236 y(Returns)15 -b(the)f(en)o(vironmen)o(t)f(asso)q(ciated)i(to)e(the)i(mo)q(dule)d -FB(mo)n(dule)t FD(.)153 2305 y Ft(\(define-mod)o(ul)o(e)17 -b(M)212 2351 y(\(define)g(a)i(1\)\))153 2396 y(\(car)g(\(environ)o(men) -o(t->)o(li)o(st)330 2442 y(\(module-en)o(vi)o(ron)o(me)o(nt)d -(\(find-modu)o(le)g('M\)\)\)\))703 2488 y Fs(=)-6 b Fn(\))19 -b Ft(\(\(a)g(.)g(1\)\))75 2648 y Fu(\(symbol-bound?)g -FB(symb)n(ol)t Fu(\))1111 b FD(pro)q(cedure)75 2698 y -Fu(\(symbol-bound?)19 b FB(symb)n(ol)j(envir)n(onment)t -Fu(\))865 b FD(pro)q(cedure)75 2772 y(Returns)17 b Fu(#t)e -FD(if)h FB(symb)n(ol)k FD(has)c(a)f(v)n(alue)h(in)f(the)i(giv)o(en)e -FB(envir)n(onment)5 b FD(,)16 b(otherwise)h(returns)g -Fu(#f)p FD(.)24 b FB(Envir)n(onment)75 2821 y FD(ma)o(y)12 -b(b)q(e)i(omitted,)e(in)i(whic)o(h)g(case)h(it)e(defaults)h(to)g(the)g -(global)e(en)o(vironmen)o(t.)p eop +30 29 bop 37 45 a FE(30)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 125 190 a Fv(\(begin)j(\(label)h('.lab\))f +(\(string->widget)f(".lab"\)\))343 240 y Fu(=)-7 b Fp(\))21 +b Fv(the)g(Tk-command)f(named)h(".lab")37 459 y Fw(\(widget-name)i +FD(widget)t Fw(\))1179 b FF(pro)q(cedure)37 534 y(Returns)16 +b(the)g(widget)f(name)g(of)g FD(widget)20 b FF(as)15 +b(a)f(sym)o(b)q(ol.)125 628 y Fv(\(begin)20 b(\(label)h('.lab\))f +(\(widget->name)f(.lab\)\))343 678 y Fu(=)-7 b Fp(\))21 +b Fv(.lab)37 896 y Fw(\(set-widget-data!)h FD(widget)i(expr)5 +b Fw(\))951 b FF(pro)q(cedure)37 978 y Fw(Set-widget-data!)15 +b FF(asso)q(ciates)i(arbitrary)g(data)f(with)i(a)f FD(widget)t +FF(.)26 b(The)18 b(system)e(mak)o(es)h(no)g(assump-)37 +1034 y(tions)e(ab)q(out)g(the)f(t)o(yp)q(e)h(of)f Fw(expr)p +FF(;)g(the)h(data)f(is)h(for)f(programmer)f(con)o(v)o(enience)j(only)l +(.)21 b(As)14 b(sho)o(wn)h(b)q(elo)o(w,)37 1091 y(it)h(could)g(b)q(e)g +(used)g(as)f(a)g(kind)h(of)f(prop)q(ert)o(y)f(list)i(for)f(widgets.)37 +1219 y Fw(\(get-widget-data)22 b FD(widget)t Fw(\))1084 +b FF(pro)q(cedure)37 1293 y(Returns)16 b(the)g(data)e(previously)j +(asso)q(ciated)e(with)h FD(widget)j FF(if)d(it)f(exists;)h(otherwise)f +(returns)g Fw(#f)p FF(.)125 1387 y Fv(\(begin)190 1437 +y(\(set-widget-data!)j(.w)k('\(:mapped)e(#t)h(:geometry)f("10x50"\)\)) +190 1487 y(\(get-keyword)f(:mapped)i(\(get-widget-data)d(.w\)\)\))343 +1537 y Fu(=)-7 b Fp(\))21 b Fv(#t)37 1763 y FI(6.13)56 +b(Mo)r(dules)37 1852 y FB(STk)12 b FF(mo)q(dules)h(can)f(b)q(e)h(used)g +(to)e(organize)i(a)f(program)f(in)o(to)h(separate)f(en)o(vironmen)o(ts) +i(\(or)p FD(name)f(sp)n(ac)n(es)t FF(\).)37 1908 y(Mo)q(dules)j(pro)o +(vide)g(a)e(clean)i(w)o(a)o(y)e(to)h(organize)g(and)g(enforce)g(the)g +(barriers)g(b)q(et)o(w)o(een)g(the)g(comp)q(onen)o(ts)g(of)37 +1964 y(a)h(program.)37 2022 y FB(STk)k FF(pro)o(vides)g(a)f(simple)i +(mo)q(dule)g(system)e(whic)o(h)i(is)f(largely)g(inspired)i(from)d(the)h +(one)g(of)f(T)l(ung)h(and)37 2079 y(Dyb)o(vig)d(exp)q(osed)h(in)f([5)o +(].)21 b(As)16 b(their)g(mo)q(dules)h(system,)d FB(STk)h +FF(mo)q(dules)i(are)e(de\014ned)i(to)e(b)q(e)i(easily)f(used)37 +2135 y(in)h(an)e(in)o(teractiv)o(e)g(en)o(vironmen)o(t.)37 +2257 y Fw(\(define-module)22 b FD(name)i Fo(h)p FF(b)q(o)q(dy)p +Fo(i)p Fw(\))1060 b FF(syn)o(tax)37 2338 y FD(De\014ne-mo)n(dule)15 +b FF(ev)m(aluates)d(the)f(expressions)h(whic)o(h)g(are)f(in)h +Fo(h)p FF(b)q(o)q(dy)p Fo(i)g FF(in)g(the)f(en)o(vironmen)o(t)h(of)e +(the)i(mo)q(dule)37 2395 y FD(name)t FF(.)25 b FD(name)c +FF(m)o(ust)16 b(b)q(e)i(a)f(v)m(alid)i(sym)o(b)q(ol.)26 +b(If)17 b(this)h(sym)o(b)q(ol)f(has)g(not)g(already)h(b)q(een)g(used)g +(to)e(de\014ne)i(a)37 2451 y(mo)q(dule,)25 b(a)d(new)g(mo)q(dule,)j +(named)d FD(name)s FF(,)i(is)e(created.)41 b(Otherwise,)24 +b Fo(h)p FF(b)q(o)q(dy)p Fo(i)e FF(is)h(ev)m(aluated)g(in)g(the)37 +2507 y(en)o(vironmen)o(t)16 b(of)f(the)g(\(old\))g(mo)q(dule)i +FD(name)811 2491 y FA(4)831 2507 y FF(.)37 2559 y(De\014nitions)f(done) +e(in)i(a)d(mo)q(dule)j(are)e(lo)q(cal)h(to)e(the)i(mo)q(dule)g(and)f +(do)h(not)e(in)o(teract)h(with)h(the)f(de\014nitions)37 +2608 y(of)h(other)g(mo)q(dules.)21 b(Consider)16 b(the)f(follo)o(wing)h +(de\014nitions,)p 37 2653 735 2 v 89 2680 a Ft(4)107 +2696 y Fs(In)10 b(fact)h Fq(define-mo)o(du)o(le)c Fs(on)k(a)g(giv)o(en) +h(name)f(de\014nes)h(a)f(new)f(mo)q(dule)i(only)g(the)f(\014rst)g(time) +g(it)g(is)h(in)o(v)o(ok)o(ed)g(on)f(this)h(name.)37 2742 +y(By)h(this)h(w)o(a)o(y)m(,)e(in)o(teactiv)o(ely)j(reloading)g(a)d(mo)q +(dule)i(do)q(es)f(not)g(de\014ne)h(a)e(new)h(en)o(tit)o(y)m(,)f(and)i +(the)e(other)h(mo)q(dules)h(whic)o(h)g(use)e(it)37 2787 +y(are)i(not)f(altered.)p eop %%Page: 31 31 -31 30 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(31)p 75 64 1763 2 v 75 179 a FG(6.15)56 b(Macros)75 -255 y Fz(STk)14 b FD(pro)o(vides)g(lo)o(w)f(lev)o(el)h(macros.)75 -305 y Fl(Note:)38 b Fj(STk)14 b Fs(macros)h(are)f(not)h(the)f(sort)h -(of)f(macros)h(de\014ned)g(in)h(the)e(app)q(endix)j(of)d -Fl(R)1373 289 y Fr(4)1384 305 y Fk(RS)r Fs(,)h(but)g(rather)f(the)h -(macros)75 355 y(one)e(can)h(\014nd)g(in)f(most)g(of)g(Lisp)h -(dialects.)75 458 y Fu(\(macro)21 b Fm(h)p FD(formals)p -Fm(i)f(h)p FD(b)q(o)q(dy)p Fm(i)p Fu(\))1159 b FD(syn)o(tax)75 -531 y Fu(Macro)14 b FD(p)q(ermits)h(to)g(create)i(a)e(macro.)21 -b(When)16 b(a)f(macro)f(is)h(called,)g(the)h(whole)f(form)f(\(i.e.)22 -b(the)16 b(macro)e(itself)75 581 y(and)g(its)g(parameters\))g(is)g -(passed)h(to)e(the)i(macro)e(b)q(o)q(dy)m(.)18 b(Binding)13 -b(asso)q(ciation)g(is)h(done)g(in)g(the)h(en)o(vironmen)o(t)75 -631 y(of)e(the)i(call.)i(The)e(result)g(of)e(the)i(binding)d(asso)q -(ciation)i(is)g(called)g(the)g FB(macr)n(o-exp)n(ansion)p -FD(.)19 b(The)c(result)f(of)g(the)75 681 y(macro)f(call)g(is)g(the)i -(result)g(of)e(the)h(ev)n(aluation)f(of)g(the)i(macro)d(expansion)i(in) -g(the)g(call)f(en)o(vironmen)o(t.)153 758 y Ft(\(define)k(foo)i -(\(macro)e(f)i(\022\(quote)e(,f\)\)\))153 804 y(\(foo)i(1)g(2)g(3\))333 -b Fs(=)-6 b Fn(\))19 b Ft(\(foo)f(1)h(2)h(3\))153 895 -y(\(define)d(1+)i(\(macro)f(form)g(\(list)f(+)i(\(cadr)f(form\))g -(1\)\)\))153 941 y(\(let)h(\(\(x)f(1\)\))g(\(1+)h(x\)\))156 -b Fs(=)-6 b Fn(\))19 b Ft(2)75 1112 y Fu(\(macro?)h FB(obj)6 -b Fu(\))1329 b FD(pro)q(cedure)75 1186 y(Returns)15 b -Fu(#t)e FD(if)g FB(obj)20 b FD(is)14 b(a)f(macro,)g(otherwise)h -(returns)i Fu(#f)p FD(.)75 1280 y Fu(\(macro-expand-1)j -FB(form)s Fu(\))1124 b FD(pro)q(cedure)75 1330 y Fu(\(macro-expand)19 -b FB(form)s Fu(\))1168 b FD(pro)q(cedure)75 1399 y Fu(Macro-expand-1)16 -b FD(returns)21 b(the)e(macro)f(expansion)h(of)f FB(form)k -FD(if)c(it)h(is)g(a)f(macro)g(call,)h(otherwise)h FB(form)i -FD(is)75 1445 y(returned)d(unc)o(hanged.)31 b Fu(Macro-expand)15 -b FD(is)j(similar)d(to)j Fu(macro-expand-1)p FD(,)d(but)j(rep)q(eately) -h(expand)f FB(form)75 1491 y FD(un)o(til)13 b(it)h(is)f(no)h(longer)g -(a)f(macro)g(call.)153 1562 y Ft(\(define)k(1-)i(\(macro)f(form)g -(\022\(-)38 b(,\(cadr)17 b(form\))h(1\)\)\))153 1607 -y(\(define)f(--)i(\(macro)f(form)g(\022\(1-)g(,\(cadr)f(form\)\)\)\)) -153 1653 y(\(macro-expa)o(nd)o(-1)f('\(1-)i(10\)\))58 -b Fs(=)-6 b Fn(\))19 b Ft(\(-)g(10)g(1\))153 1699 y(\(macro-expa)o(nd) -55 b('\(1-)18 b(10\)\))58 b Fs(=)-6 b Fn(\))19 b Ft(\(-)g(10)g(1\))153 -1744 y(\(macro-expa)o(nd)o(-1)d('\(--)i(10\)\))58 b Fs(=)-6 -b Fn(\))19 b Ft(\(1-)g(10\))153 1790 y(\(macro-expa)o(nd)55 -b('\(--)18 b(10\)\))58 b Fs(=)-6 b Fn(\))19 b Ft(\(-)g(10)g(1\))75 -1955 y Fu(\(macro-expand)g FB(form)s Fu(\))1168 b FD(pro)q(cedure)75 -2025 y(Returns)15 b(the)f(macro)e(expansion)i(of)f FB(form)j -FD(if)d(it)g(is)h(a)f(macro)f(call,)h(otherwise)h FB(form)j -FD(is)c(returned)i(unc)o(hanged.)75 2070 y(Macro)f(expansion)g(con)o -(tin)o(ue)g(un)o(til,)e(the)j(form)d(obtained)i(is)153 -2141 y Ft(\(define)j(1-)i(\(macro)f(form)g(\(list)f('-)i(\(cadr)f -(form\))f(1\)\)\))153 2187 y(\(macro-expa)o(nd)f('\(1-)i(10\)\))97 -b Fs(=)-6 b Fn(\))19 b Ft(\(-)g(10)g(1\))75 2353 y Fu(\(macro-body)h -FB(macr)n(o)s Fu(\))1186 b FD(pro)q(cedure)75 2422 y(Returns)15 -b(the)f(b)q(o)q(dy)g(of)f FB(macr)n(o)153 2493 y Ft(\(macro-body)j -(1+\))703 2539 y Fs(=)-6 b Fn(\))19 b Ft(\(macro)e(form)h(\(list)g(+)h -(\(cadr)f(form\))g(1\)\))75 2704 y Fu(\(define-macro)h -FB(\()p Fm(h)p FD(name)p Fm(i)i(h)p FD(formals)p Fm(i)n -FB(\))h Fm(h)p FD(b)q(o)q(dy)p Fm(i)p Fu(\))830 b FD(macro)75 -2773 y Fu(Define-macro)10 b FD(is)j(a)g(macro)f(whic)o(h)h(p)q(ermits)f -(to)h(de\014ne)h(a)f(macro)f(more)g(easily)g(than)h(with)g(the)h -Fu(macro)e FD(form.)75 2819 y(It)i(is)g(similar)d(to)j(the)g -Fu(defmacro)f FD(of)g(Commo)o(n)e(Lisp)j([6)o(].)p eop +31 30 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(31)p 37 64 1838 2 v 168 190 a Fv(\(define-module)19 +b(M1)234 240 y(\(define)h(a)i(1\)\))168 340 y(\(define-module)d(M2)212 +390 y(\(define)h(a)i(2\))212 439 y(\(define)e(b)i(\(*)f(2)h(x\)\)\))37 +567 y FF(Here,)15 b(t)o(w)o(o)e(mo)q(dules)i(are)f(de\014ned)i(and)f +(they)f(b)q(oth)h(bind)g(the)g(sym)o(b)q(ol)g Fw(a)f +FF(to)g(a)g(v)m(alue.)20 b(Ho)o(w)o(ev)o(er,)14 b(since)h +Fw(a)37 623 y FF(has)h(b)q(een)g(de\014ned)g(in)g(t)o(w)o(o)e +(distincts)j(mo)q(dules)f(they)f(denote)h(t)o(w)o(o)e(di\013eren)o(t)h +(lo)q(cations.)37 680 y(The)21 b(\\)p Fw(STk)p FF(")f(mo)q(dule,)j +(whic)o(h)f(is)f(prede\014ned,)i(is)e(a)g(sp)q(ecial)h(mo)q(dule)g +(whic)o(h)g(con)o(tains)e(all)i(the)f FD(glob)n(al)37 +736 y(variables)f FF(of)15 b(a)h FD(R)354 719 y FA(4)366 +736 y Fz(RS)i FF(program.)j(A)16 b(sym)o(b)q(ol)g(de\014ned)i(in)e(the) +g Fw(STk)g FF(mo)q(dule,)h(if)f(not)g(hidden)h(b)o(y)f(a)g(lo)q(cal)37 +792 y(de\014nition,)i(is)d(alw)o(a)o(ys)g(visible)j(from)d(inside)i(a)e +(mo)q(dule.)22 b(So,)15 b(in)h(the)g(previous)g(exemple,)h(the)e +Fw(x)h FF(sym)o(b)q(ol)37 849 y(refers)f(the)h Fw(x)f +FF(sym)o(b)q(ol)g(de\014ned)i(in)f(the)f Fw(STk)g FF(mo)q(dule.)37 +905 y(The)h(result)g(of)e FD(de\014ne-mo)n(dule)19 b +FF(is)c(unde\014ned.)37 1002 y Fw(\(find-module)23 b +FD(name)s Fw(\))1197 b FF(pro)q(cedure)37 1059 y Fw(\(find-module)23 +b FD(name)g(default)t Fw(\))1041 b FF(pro)q(cedure)37 +1139 y FB(STk)13 b FF(mo)q(dules)i(are)e(\014rst)g(class)g(ob)s(jects)g +(and)h Fw(find-module)d FF(returns)j(the)f(mo)q(dule)h(asso)q(ciated)g +(to)f FD(name)37 1195 y FF(if)20 b(it)g(exists.)33 b(If)19 +b(there)h(is)g(no)f(mo)q(dule)h(asso)q(ciated)g(to)f +FD(name)s FF(,)h(an)f(error)g(is)h(signaled)g(if)g(no)f +FD(default)24 b FF(is)37 1252 y(pro)o(vided,)16 b(otherwise)g +Fw(find-module)d FF(returns)i(default.)37 1349 y Fw(\(module?)23 +b FD(obje)n(ct)t Fw(\))1286 b FF(pro)q(cedure)37 1422 +y(Returns)16 b Fw(#t)f FF(if)h FD(obje)n(ct)j FF(is)d(a)e(mo)q(dule)j +(and)e Fw(#f)g FF(otherwise.)168 1493 y Fv(\(module?)20 +b(\(find-module)g('STk\)\))343 1542 y Fu(=)-7 b Fp(\))21 +b Fv(#t)168 1592 y(\(module?)f('STk\))343 1642 y Fu(=)-7 +b Fp(\))21 b Fv(#f)168 1692 y(\(module?)f(1\))343 1742 +y Fu(=)-7 b Fp(\))21 b Fv(#f)37 1909 y Fw(\(export)i +Fo(h)p FF(sym)o(b)q(ol)386 1916 y FA(1)406 1909 y Fo(i)h(h)p +FF(sym)o(b)q(ol)606 1916 y FA(2)626 1909 y Fo(i)o FD(.)7 +b(.)g(.)g Fw(\))1015 b FF(syn)o(tax)37 1989 y(Sp)q(eci\014es)15 +b(the)c(sym)o(b)q(ols)i(whic)o(h)f(are)g(exp)q(orted)g(\(i.e.)19 +b FD(visible)s FF(\))11 b(outside)h(the)g(curren)o(t)g(mo)q(dule.)20 +b(By)12 b(default,)37 2046 y(sym)o(b)q(ols)j(de\014ned)h(in)f(a)e(mo)q +(dule)j(are)e(not)f(visible)k(outside)e(this)f(mo)q(dule,)h(excepted)g +(the)g(sym)o(b)q(ols)f(whic)o(h)37 2102 y(app)q(ear)i(in)g(an)f +Fw(export)f FF(clause.)37 2159 y(If)j(sev)o(eral)g Fw(export)f +FF(clauses)i(app)q(ear)f(in)g(a)f(mo)q(dule,)i(the)f(set)g(of)f(exp)q +(orted)h(sym)o(b)q(ols)g(is)g(determined)h(b)o(y)37 2215 +y FD(unioning)d FF(sym)o(b)q(ols)g(exp)q(orted)h(in)g(all)g(the)f +Fw(export)g FF(clauses.)37 2272 y(The)h(result)g(of)e +FD(exp)n(ort)20 b FF(is)c(unde\014ned.)37 2369 y Fw(\(import)23 +b Fo(h)p FF(mo)q(dule)390 2376 y FA(1)411 2369 y Fo(i)h(h)p +FF(mo)q(dule)615 2376 y FA(2)635 2369 y Fo(i)p FD(.)7 +b(.)g(.)g Fw(\))1005 b FF(syn)o(tax)37 2449 y(Sp)q(eci\014es)17 +b(the)c(mo)q(dules)i(whic)o(h)g(are)f(imp)q(orted)g(b)o(y)g(the)g +(curren)o(t)g(mo)q(dule.)20 b(Imp)q(orting)15 b(a)e(mo)q(dule)j(mak)o +(es)37 2505 y(the)k(sym)o(b)q(ols)f(it)h(exp)q(orts)f(visible)i(to)d +(the)i(imp)q(orter,)g(if)f(not)g(hidden)i(b)o(y)e(lo)q(cal)h +(de\014nitions.)34 b(When)19 b(a)37 2562 y(sym)o(b)q(ol)d(is)g(exp)q +(orted)g(b)o(y)f(sev)o(eral)h(of)f(the)g(imp)q(orted)h(mo)q(dules,)g +(the)f(lo)q(cation)i(denoted)f(b)o(y)f(this)h(sym)o(b)q(ol)37 +2618 y(in)23 b(the)f(imp)q(orter)g(mo)q(dule)h(corresp)q(ond)f(to)f +(the)h(one)g(of)g(the)f(\014rst)h(mo)q(dule)h(in)g(the)e(list)i(\()p +Fo(h)p FF(mo)q(dule)1837 2625 y FA(1)1857 2618 y Fo(i)37 +2674 y(h)p FF(mo)q(dule)199 2681 y FA(2)220 2674 y Fo(i)p +FF(.)7 b(.)g(.)g(\))20 b(whic)o(h)c(exp)q(ort)f(it.)37 +2731 y(If)i(sev)o(eral)f Fw(import)f FF(clauses)i(app)q(ear)f(in)h(a)e +(mo)q(dule,)i(the)f(set)g(of)g(imp)q(orted)g(mo)q(dules)h(is)g +(determined)g(b)o(y)37 2787 y(app)q(ending)g(the)f(v)m(arious)f(list)h +(of)f(mo)q(dules)h(in)h(their)e(apparition)h(order.)p +eop %%Page: 32 32 -32 31 bop 75 47 a FC(32)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 153 179 a Ft(\(define-mac)o(ro)i(\(incr)i(x\))h -(\022\(set!)e(,x)i(\(+)g(,x)f(1\)\)\))153 224 y(\(let)h(\(\(a)f(1\)\))g -(\(incr)g(a\))h(a\))78 b Fs(=)-6 b Fn(\))19 b Ft(2)153 -316 y(\(define-mac)o(ro)d(\(when)i(test)g(.)h(body\))193 -361 y(\022\(if)f(,test)f(,@\(if)h(\(null?)f(\(cdr)h(body\)\))g(body)g -(\022\(\(begin)e(,@body\)\)\)\)\))153 407 y(\(macro-expa)o(nd)g -('\(when)h(a)j(b\)\))38 b Fs(=)-6 b Fn(\))19 b Ft(\(if)g(a)g(b\))153 -453 y(\(macro-expa)o(nd)d('\(when)h(a)j(b)f(c)g(d\)\))703 -498 y Fs(=)-6 b Fn(\))19 b Ft(\(if)g(a)g(\(begin)e(b)i(c)h(d\)\))75 -622 y Fl(Note:)35 b Fs(Calls)14 b(to)g(macros)g(de\014ned)h(b)o(y)f -Ft(define-m)o(acr)o(o)c Fs(are)k(ph)o(ysically)j(replaced)e(b)o(y)f -(their)g(macro-expansion)i(if)e(the)75 672 y(v)n(ariable)h -Ft(*debug*)10 b Fs(is)k Ft(#f)e Fs(\(i.e.)18 b(their)c(b)q(o)q(dy)g(is) -g(\\in-lined")i(in)e(the)f(macro)g(call\).)19 b(T)m(o)13 -b(a)o(v)o(oid)h(this)g(feature,)f(and)h(to)f(ease)75 -721 y(debugging,)i(y)o(ou)f(ha)o(v)o(e)f(to)g(set)g(this)h(v)n(ariable) -h(to)e Ft(#t)p Fs(.)j(\(See)d(also)h(6.25\).)75 831 y -FG(6.16)56 b(System)16 b(pro)r(cedures)75 907 y FD(This)e(section)g -(lists)g(a)g(set)h(of)e(pro)q(cedures)j(whic)o(h)e(p)q(ermits)f(to)h -(access)i(some)d(system)g(in)o(ternals.)75 1011 y Fu -(\(expand-file-name)18 b FB(string)t Fu(\))1062 b FD(pro)q(cedure)75 -1084 y Fu(Expand-file-name)12 b FD(expands)k(the)g(\014lename)f(giv)o -(en)g(in)g FB(string)j FD(to)d(an)h(absolute)f(path.)23 -b(This)15 b(function)h(un-)75 1134 y(derstands)f(the)g -FB(tilde)f(c)n(onvention)h FD(for)f(\014lenames.)153 -1215 y Ft(;;)19 b(Current)e(directory)f(is)j(/users/eg/)o(STk)153 -1261 y(\(expand-fil)o(e-)o(nam)o(e)e(".."\))350 1306 -y Fs(=)-6 b Fn(\))19 b Ft("/users/eg)o(")153 1352 y(\(expand-fil)o(e-)o -(nam)o(e)e("~root/b)o(in\))350 1398 y Fs(=)-6 b Fn(\))19 -b Ft("/bin")153 1443 y(\(expand-fil)o(e-)o(nam)o(e)e("~/STk\)")350 -1489 y Fs(=)-6 b Fn(\))19 b Ft("/users/eg)o(/S)o(Tk")75 -1667 y Fu(\(canonical-path)g FB(p)n(ath)s Fu(\))1135 -b FD(pro)q(cedure)75 1741 y(Expands)12 b(all)e(sym)o(b)q(olic)g(links)h -(in)g FB(p)n(ath)k FD(and)d(returns)h(its)e(canonicalized)h(absolute)f -(pathname.)16 b(The)c(resulting)75 1791 y(path)e(do)f(not)h(ha)o(v)o(e) -g(sym)o(b)q(olic)e(links.)16 b(If)9 b FB(p)n(ath)14 b -FD(do)q(esn't)c(designate)g(a)g(v)n(alid)e(pathname,)h -FB(c)n(anonic)n(al-p)n(ath)14 b FD(returns)75 1840 y -Fu(#f)p FD(.)75 1938 y Fu(\(dirname)20 b FB(string)t -Fu(\))1258 b FD(pro)q(cedure)75 2007 y(Returns)15 b(a)e(string)h(con)o -(taining)f(all)g(but)h(the)g(last)g(comp)q(onen)o(t)f(of)g(the)i(path)f -(name)e(giv)o(en)i(in)f FB(string)s FD(.)153 2081 y Ft(\(dirname)k -("/a/b/c.st)o(k")o(\))350 2127 y Fs(=)-6 b Fn(\))19 b -Ft("/a/b")75 2298 y Fu(\(basename)h FB(string)t Fu(\))1236 -b FD(pro)q(cedure)75 2368 y(Returns)15 b(a)e(string)h(con)o(taining)f -(the)i(last)e(comp)q(onen)o(t)g(of)h(the)g(path)g(name)f(giv)o(en)g(in) -h FB(string)s FD(.)153 2441 y Ft(\(basname)j("/a/b/c.st)o(k")o(\))350 -2487 y Fs(=)-6 b Fn(\))19 b Ft("c.stk")75 2658 y Fu(\(decompose-file-n) -o(ame)g FB(string)t Fu(\))996 b FD(pro)q(cedure)75 2728 -y(Returns)14 b(an)e(\\explo)q(ded")h(list)f(of)g(the)h(path)g(name)e -(comp)q(onen)o(ts)i(giv)o(en)f(in)g FB(string)s FD(.)18 -b(The)13 b(\014rst)g(elemen)o(t)g(in)f(the)75 2773 y(list)g(denotes)i -(if)e(the)i(giv)o(en)e FB(string)k FD(is)d(an)f(absolute)h(path)g(or)g -(a)g(relativ)o(e)f(one,)h(b)q(eing)g Fu("/")f FD(or)h -Fu(".")f FD(resp)q(ectiv)o(ely)m(.)75 2819 y(Eac)o(h)i(comp)q(onen)o(t) -f(of)h(this)g(list)f(is)h(a)f(string.)p eop +32 31 bop 37 45 a FE(32)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 125 190 a Fv(\(define-module)i(M1)168 +240 y(\(export)i(a)g(b\))168 290 y(\(define)g(a)g('M1-a\))168 +340 y(\(define)g(b)g('M1-b\)\))125 439 y(\(define-module)e(M2)168 +489 y(\(export)i(b)g(c\))168 539 y(\(define)g(b)g('M2-b\))168 +589 y(\(define)g(c)g('M2-c\)\))125 689 y(\(define-module)e(M3)168 +738 y(\(import)i(M1)g(M2\))168 788 y(\(display)f(\(list)h(a)h(b)f +(c\)\)\))343 838 y Fu(=)-7 b Fp(\))21 b Fv(displays)f(\(m1-a)h(m1-b)g +(m2-c\))37 979 y Fn(Note:)56 b Fu(There)19 b(is)g(no)f(kind)g(of)g +Fn(tr)n(ansitivity)j Fu(in)d(mo)q(dule)f(imp)q(ortations:)26 +b(when)19 b(the)g(mo)q(dule)e Fl(C)k Fu(imp)q(orts)c(the)37 +1035 y(mo)q(dule)h Fl(B)j Fu(whic)o(h)d(an)h(imp)q(orter)f(of)g +Fl(A)p Fu(,)h(the)g(sym)o(b)q(ols)e(of)h Fl(A)h Fu(are)g(not)g(visible) +f(from)f Fl(C)s Fu(,)i(except)h(b)o(y)e(explicitly)37 +1092 y(imp)q(orting)d(the)j Fl(A)f Fu(mo)q(dule)f(from)f +Fl(C)s Fu(.)57 b Fn(Note:)50 b Fu(The)17 b(mo)q(dule)f +Fv(STk)p Fu(,)g(whic)o(h)h(con)o(tains)g(the)h Fn(glob)n(al)f +(variables)j Fu(is)37 1148 y(alw)o(a)o(ys)12 b(implicitly)d(imp)q +(orted)i(from)f(a)i(mo)q(dule.F)m(urthermore,)e(this)i(mo)q(dule)f(is)h +(alw)o(a)o(ys)f(placed)h(at)g(the)h(end)g(of)e(the)37 +1205 y(list)j(of)f(imp)q(orted)g(mo)q(dules.)37 1306 +y Fw(\(export-symbol)22 b FD(symb)n(ol)i(mo)n(dule)s +Fw(\))963 b FF(pro)q(cedure)37 1386 y(Exp)q(orts)17 b +FD(symb)n(ol)j FF(from)c FD(mo)n(dule)s FF(.)24 b(This)17 +b(pro)q(cedure)g(can)g(b)q(e)g(useful,)h(when)f(debugging)g(a)f +(program,)g(to)37 1443 y(mak)o(e)i(visible)i(a)e(giv)o(en)g(sym)o(b)q +(ol)g(without)g(reloading)h(or)f(rede\014ning)h(the)f(mo)q(dule)h +(where)f(this)h(sym)o(b)q(ol)37 1499 y(w)o(as)c(de\014ned.)37 +1601 y Fw(\(export-all-symbols)n(\))1164 b FF(pro)q(cedure)37 +1681 y(Exp)q(orts)14 b(all)g(the)g(sym)o(b)q(ols)g(of)f(curren)o(t)h +(mo)q(dule)h(.)k(If)14 b(sym)o(b)q(ols)g(are)g(added)g(to)f(the)h +(curren)o(t)f FD(mo)n(dule)18 b FF(after)37 1737 y(the)e(call)g(to)f +Fw(export-all-symbols)p FF(,)d(they)j(are)g(automatically)h(exp)q +(orted.)37 1794 y Fn(Note:)36 b Fu(The)13 b Fv(STk)f +Fu(mo)q(dule)f(exp)q(ort)i(all)f(the)h(sym)o(b)q(ols)e(whic)o(h)i(are)g +(de\014ned)g(in)g(it)f(\(i.e.)17 b Fn(glob)n(al)d(variables)h +Fu(are)e(visible,)37 1850 y(if)h(not)f(hidden,)h(from)e(all)h(the)h(mo) +q(dules)f(of)g(a)h(program.)37 1952 y Fw(\(with-module)23 +b FD(name)g Fo(h)p FF(expr)583 1959 y FA(1)603 1952 y +Fo(i)h(h)p FF(expr)750 1959 y FA(2)769 1952 y Fo(i)g +FD(.)7 b(.)g(.)g Fw(\))847 b FF(syn)o(tax)37 2032 y(Ev)m(aluates)15 +b(the)g(expressions)g(of)f Fo(h)p FF(expr)713 2039 y +FA(1)733 2032 y Fo(i)g(h)p FF(expr)870 2039 y FA(2)889 +2032 y Fo(i)h FF(.)7 b(.)g(.)g(in)15 b(the)g(en)o(vironmen)o(t)g(of)f +(mo)q(dule)h FD(name)s FF(.)20 b(Mo)q(dule)37 2088 y +FD(name)e FF(m)o(ust)13 b(ha)o(v)o(e)h(b)q(een)h(created)f(previously)i +(b)o(y)e(a)g Fw(define-module)p FF(.)j(The)e(result)f(of)g +Fw(with-module)e FF(is)37 2145 y(the)k(result)f(of)g(the)g(ev)m +(aluation)i(of)e(the)g(last)g Fo(h)p FF(expr)p Fo(i)p +FF(.)168 2229 y Fv(\(define-module)k(M)212 2279 y(\(define)h(a)i(1\)) +212 2329 y(\(define)e(b)i(2\)\))168 2428 y(\(with-module)e(M)234 +2478 y(\(+)h(a)h(b\)\))343 2528 y Fu(=)-7 b Fp(\))21 +b Fv(3)37 2714 y Fw(\(current-module)n(\))1260 b FF(pro)q(cedure)37 +2787 y(Returns)16 b(the)g(curren)o(t-mo)q(dule.)p eop %%Page: 33 33 -33 32 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(33)p 75 64 1763 2 v 153 179 a Ft(\(decompose-)o(fi)o(le-)o(nam)o(e)16 -b("/a/b/c.st)o(k"\))350 224 y Fs(=)-6 b Fn(\))19 b Ft(\("/")f("a")h -("b")f("c.stk"\))153 270 y(\(decompose-)o(fi)o(le-)o(nam)o(e)e -("a/b/c.stk)o("\))350 316 y Fs(=)-6 b Fn(\))19 b Ft(\(".")f("a")h("b")f -("c.stk"\))75 481 y Fu(\(file-is-director)o(y?)h FB(string)t -Fu(\))1018 b FD(pro)q(cedure)75 531 y Fu(\(file-is-regular?)18 -b FB(string)t Fu(\))1062 b FD(pro)q(cedure)75 581 y Fu -(\(file-is-readable)o(?)19 b FB(string)t Fu(\))1040 b -FD(pro)q(cedure)75 630 y Fu(\(file-is-writable)o(?)19 -b FB(string)t Fu(\))1040 b FD(pro)q(cedure)75 680 y Fu -(\(file-is-executab)o(le?)19 b FB(string)t Fu(\))996 -b FD(pro)q(cedure)75 730 y Fu(\(file-exists?)19 b FB(string)t -Fu(\))1149 b FD(pro)q(cedure)75 804 y(Returns)16 b Fu(#t)e -FD(if)g(the)i(predicate)g(is)f(true)h(for)e(the)i(path)f(name)e(giv)o -(en)i(in)f FB(string)s FD(;)h(returns)i Fu(#f)d FD(otherwise)i(\(or)f -(if)75 853 y FB(string)i FD(denotes)e(a)f(\014le)g(whic)o(h)f(do)q(es)i -(not)f(exist\).)75 948 y Fu(\(glob)21 b Fx(patter)q(n)343 -954 y Fy(1)383 948 y Fx(patter)q(n)520 954 y Fy(2)560 -948 y Fx(:)7 b(:)g(:)f Fu(\))1021 b FD(pro)q(cedure)75 -1021 y(The)17 b(co)q(de)h(for)e Fu(glob)g FD(is)g(tak)o(en)h(from)e -(the)j(Tcl)e(library)m(.)26 b(It)16 b(p)q(erforms)h(\014le)f(name)g -(\\globbing")f(in)h(a)g(fashion)75 1071 y(similar)11 -b(to)i(the)h(csh)g(shell.)j Fu(Glob)c FD(returns)h(a)f(list)g(of)g(the) -h(\014lenames)e(that)h(matc)o(h)f(at)h(least)h(one)f(of)g(the)h -FB(p)n(attern)75 1121 y FD(argumen)o(ts.)j(The)e FB(p)n(attern)h -FD(argumen)o(ts)e(ma)o(y)e(con)o(tain)h(the)h(follo)o(wing)e(sp)q -(ecial)i(c)o(haracters:)137 1202 y Fm(\017)21 b FD(?)d(Matc)o(hes)d(an) -o(y)e(single)h(c)o(haracter.)137 1281 y Fm(\017)21 b -Fu(*)13 b FD(Matc)o(hes)i(an)o(y)f(sequence)i(of)d(zero)i(or)f(more)f -(c)o(haracters.)137 1360 y Fm(\017)21 b Fu([)p FD(c)o(hars)p -Fu(])14 b FD(Matc)o(hes)g(an)o(y)f(single)h(c)o(haracter)h(in)e(c)o -(hars.)18 b(If)13 b(c)o(hars)i(con)o(tains)e(a)g(sequence)j(of)d(the)h -(form)e Fu(a-b)179 1410 y FD(then)i(an)o(y)g(c)o(haracter)h(b)q(et)o(w) -o(een)g Fu(a)f FD(and)g Fu(b)f FD(\(inclusiv)o(e\))h(will)f(matc)o(h.) -137 1489 y Fm(\017)21 b Fu(\\)p FD(x)13 b(Matc)o(hes)i(the)g(c)o -(haracter)g Fu(x)p FD(.)137 1568 y Fm(\017)21 b(f)p FD(a,b,...)p -Fm(g)11 b FD(Matc)o(hes)k(an)o(y)e(of)g(the)i(strings)f -Fu(a)p FD(,)f Fu(b)p FD(,)g(etc.)75 1650 y(As)g(with)g(csh,)h(a)e(\\.") -18 b(at)12 b(the)i(b)q(eginning)e(of)h(a)g(\014le's)f(name)g(or)h(just) -g(after)h(a)e(\\/")h(m)o(ust)f(b)q(e)h(matc)o(hed)f(explicitly)75 -1700 y(or)i(with)f(a)h Fm(fg)f FD(construct.)20 b(In)14 -b(addition,)e(all)h(\\/")g(c)o(haracters)j(m)o(ust)c(b)q(e)j(matc)o -(hed)e(explicitly)m(.)75 1750 y(If)k(the)g(\014rst)h(c)o(haracter)g(in) -f(a)g(pattern)h(is)f(\\)p Fu(~)p FD(")f(then)h(it)g(refers)i(to)d(the)i -(home)e(directory)i(of)e(the)i(user)g(whose)75 1799 y(name)11 -b(follo)o(ws)f(the)j(\\)p Fu(~)p FD(".)k(If)12 b(the)g(\\)p -Fu(~)p FD(")g(is)g(follo)o(w)o(ed)e(immediately)f(b)o(y)j(\\/")f(then)i -(the)g(v)n(alue)e(of)h(the)h(en)o(vironmen)o(t)75 1849 -y(v)n(ariable)g(HOME)h(is)g(used.)75 1899 y Fu(Glob)i -FD(di\013ers)i(from)d(csh)j(globbing)d(in)i(t)o(w)o(o)f(w)o(a)o(ys.)27 -b(First,)17 b(it)g(do)q(es)h(not)e(sort)i(its)f(result)g(list)g(\(use)h -(the)f Fu(sort)75 1949 y FD(pro)q(cedure)g(if)c(y)o(ou)i(w)o(an)o(t)f -(the)h(list)f(sorted\).)22 b(Second,)15 b(glob)e(only)h(returns)j(the)e -(names)f(of)g(\014les)h(that)f(actually)75 1999 y(exist;)g(in)f(csh)i -(no)f(c)o(hec)o(k)g(for)g(existence)i(is)d(made)g(unless)i(a)e(pattern) -i(con)o(tains)f(a)f(?,)g Fu(*)p FD(,)h(or)f Fu([])p FD(construct.)75 -2093 y Fu(\(getcwd)o(\))1409 b FD(pro)q(cedure)75 2166 -y Fu(Getcwd)13 b FD(returns)i(a)f(string)g(con)o(taining)e(the)j -(curren)o(t)g(w)o(orking)e(directory)m(.)75 2261 y Fu(\(chdir)21 -b FB(string)t Fu(\))1301 b FD(pro)q(cedure)75 2334 y -Fu(Chdir)13 b FD(c)o(hanges)h(the)h(curren)o(t)g(directory)g(to)f(the)g -(directory)h(giv)o(en)e(in)h FB(string)s FD(.)75 2428 -y Fu(\(getpid)20 b FB(string)t Fu(\))1280 b FD(pro)q(cedure)75 -2502 y(Returns)15 b(the)g(system)g(pro)q(cess)h(n)o(um)o(b)q(er)e(of)g -(the)h(curren)o(t)h Fz(STk)f FD(in)o(terpreter)h(\(i.e.)k(the)15 -b(Unix)f FB(pid)p FD(\).)20 b(Result)15 b(is)75 2552 -y(an)f(in)o(teger.)75 2646 y Fu(\(system)20 b FB(string)t -Fu(\))1280 b FD(pro)q(cedure)75 2696 y Fu(\(!)21 b FB(string)t -Fu(\))1389 b FD(pro)q(cedure)75 2769 y(Sends)13 b(the)g(giv)o(en)f -FB(string)j FD(to)d(the)h(system)f(shell)g FB(/bin/sh)t -FD(.)17 b(The)c(result)g(of)e Fu(system)g FD(is)h(the)h(in)o(teger)g -(status)g(co)q(de)75 2819 y(the)h(shell)g(returns.)p -eop +33 32 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(33)p 37 64 1838 2 v 168 190 a Fv(\(define-module)19 +b(M)234 240 y(...\))190 340 y(\(with-module)g(M)234 390 +y(\(cons)h(\(eq?)h(\(current-module\))e(\(find-module)g('M\)\))364 +439 y(\(eq?)i(\(current-module\))e(\(find-module)g('STk\)\)\)\))343 +539 y Fu(=)-7 b Fp(\))21 b Fv(\(#t)g(.)h(#f\))37 781 +y Fw(\(select-module)g FD(name)s Fw(\))1216 b FF(syn)o(tax)37 +865 y(Ev)m(aluates)19 b(the)e(expressions)i(whic)o(h)f(follo)o(ws)g(in) +g(mo)q(dule)h FD(name)i FF(en)o(vironmen)o(t.)27 b(Mo)q(dule)19 +b FD(name)i FF(m)o(ust)37 921 y(ha)o(v)o(e)12 b(b)q(een)g(created)f +(previously)i(b)o(y)f(a)f Fw(define-module)p FF(.)16 +b(The)c(result)g(of)f Fw(select-module)f FF(is)h(unde\014ned.)37 +978 y Fw(Select-module)j FF(is)i(particularly)h(useful)f(when)g +(debugging)h(since)f(it)g(allo)o(ws)g(to)f(place)h(toplev)o(el)h(ev)m +(alu-)37 1034 y(ation)f(in)g(a)f(particular)g(mo)q(dule.)21 +b(The)16 b(follo)o(wing)g(transcript)f(sho)o(ws)f(an)i(usage)f(of)f +Fw(select-module)1809 1018 y FA(5)1827 1034 y FF(:)125 +1154 y Fv(STk>)21 b(\(define)f(foo)h(1\))125 1204 y(STk>)g +(\(define-module)e(bar)299 1254 y(\(define)h(foo)i(2\)\))125 +1304 y(STk>)f(foo)125 1354 y(1)125 1404 y(STk>)g(\(select-module)e +(bar\))125 1453 y(bar>)i(foo)125 1503 y(2)125 1553 y(bar>)g +(\(select-module)e(STk\))125 1603 y(STk>)37 1861 y Fw(\(module-name)k +FD(mo)n(dule)s Fw(\))1166 b FF(pro)q(cedure)37 1944 y(Returns)16 +b(the)g(name)f(\(a)f(sym)o(b)q(ol\))i(asso)q(ciated)f(to)f(a)h +FD(mo)n(dule)t FF(.)37 2089 y Fw(\(module-imports)22 +b FD(mo)n(dule)s Fw(\))1095 b FF(pro)q(cedure)37 2173 +y(Returns)16 b(the)g(list)g(mo)q(dules)g(that)e FD(mo)n(dule)19 +b FF(imp)q(orts.)37 2318 y Fw(\(module-exports)j FD(mo)n(dule)s +Fw(\))1095 b FF(pro)q(cedure)37 2401 y(Returns)16 b(the)g(list)g(of)e +(sym)o(b)q(ols)i(exp)q(orted)f(b)o(y)g FD(mo)n(dule)t +FF(.)37 2546 y Fw(\(module-symbols)22 b FD(mo)n(dule)s +Fw(\))1095 b FF(pro)q(cedure)37 2629 y(Returns)16 b(the)g(list)g(sym)o +(b)q(ols)f(that)f(ere)i(de\014ned)g(in)g FD(mo)n(dule)t +FF(.)p 37 2699 735 2 v 89 2726 a Ft(5)107 2742 y Fs(This)d(transcript)g +(uses)g(the)g(default)g(v)n(alue)h(for)e(the)h(function)g +Fq(repl-displ)o(ay-)o(pro)o(mp)o(t)c Fs(\(see)k(page)g(72\))f(whic)o(h) +h(displa)o(ys)37 2787 y(the)h(name)f(of)g(the)g(curren)o(t)g(mo)q(dule) +i(in)f(the)f(prompt.)p eop %%Page: 34 34 -34 33 bop 75 47 a FC(34)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(\(exec)21 b FB(string)t Fu(\))1323 -b FD(pro)q(cedure)75 252 y(Executes)23 b(the)e(command)d(con)o(tained)j -(in)f FB(string)k FD(and)d(redirects)h(its)f(output)g(in)f(a)h(string.) -39 b(This)20 b(string)75 302 y(constitutes)15 b(the)g(result)f(of)g -Fu(exec)p FD(.)75 409 y Fu(\(getenv)20 b FB(string)t -Fu(\))1280 b FD(pro)q(cedure)75 478 y(Lo)q(oks)17 b(for)h(the)g(en)o -(vironmen)o(t)f(v)n(ariable)f(named)h FB(string)j FD(and)e(returns)h -(its)f(v)n(alue)f(as)h(a)f(string,)h(if)f(it)g(exists.)75 -524 y(Otherwise,)e Fu(getenv)d FD(returns)k Fu(#f)p FD(.)153 -604 y Ft(\(getenv)h("SHELL"\))350 650 y Fs(=)-6 b Fn(\))19 -b Ft("/bin/zsh")75 836 y Fu(\(setenv!)h FB(var)i(value)s -Fu(\))1191 b FD(pro)q(cedure)75 905 y(Sets)13 b(the)f(en)o(vironmen)o -(t)f(v)n(ariable)g FB(var)16 b FD(to)c FB(value)s FD(.)18 -b FB(V)m(ar)d FD(and)d FB(value)j FD(m)o(ust)c(b)q(e)i(strings.)18 -b(The)12 b(result)h(of)e Fu(setenv!)75 951 y FD(is)j(unde\014ned.)153 -1030 y Ft(\(getenv)j("SHELL"\))350 1076 y Fs(=)-6 b Fn(\))19 -b Ft("/bin/zsh")75 1274 y FG(6.17)56 b(Addresses)75 1351 -y FD(An)12 b FB(addr)n(ess)f FD(is)g(a)h(Sc)o(heme)f(ob)r(ject)h(whic)o -(h)g(con)o(tains)f(a)g(reference)j(to)e(another)f(Sc)o(heme)h(ob)r -(ject.)18 b(This)11 b(t)o(yp)q(e)h(can)75 1400 y(b)q(e)f(view)o(ed)f -(as)g(a)f(kind)h(of)f(p)q(oin)o(ter)h(to)g(a)g(Sc)o(heme)g(ob)r(ject.) -17 b(Addresses,)c(ev)o(en)e(though)e(they)i(are)f(v)o(ery)g(dangerous,) -75 1450 y(ha)o(v)o(e)j(b)q(een)h(in)o(tro)q(duced)f(in)g -Fz(STk)g FD(so)g(that)g(ob)r(jects)h(that)f(ha)o(v)o(e)g(no)g -(\\readable")f(external)i(represen)o(tation)g(can)75 -1500 y(still)g(b)q(e)h(transformed)e(in)o(to)h(strings)h(and)f(bac)o(k) -h(without)f(loss)g(of)g(information.)j(Adresses)g(w)o(ere)e(useful)g -(with)75 1550 y(pre-3.0)f(v)o(ersion)g(of)f Fz(STk)p -FD(;)h(their)g(usage)h(is)e(no)o(w)h FC(stongly)g(discouraged)p -FD(,)d(unless)k(y)o(ou)e(kno)o(w)h(what)g(y)o(ou)f(do.)75 -1600 y(In)i(particular,)h(an)f(address)i(can)e(designate)h(an)f(ob)r -(ject)i(at)e(a)g(time)f(and)i(another)g(one)f(later)h(\(i.e.)22 -b(after)16 b(the)75 1649 y(garbage)e(collector)g(has)g(mark)o(ed)f(the) -h(zone)h(as)f(free\).)75 1699 y(Addresses)i(are)f(prin)o(ted)f(with)g -(a)f(sp)q(ecial)i(syn)o(tax:)j Fu(#pNNN)p FD(,)12 b(where)j -Fu(NNN)f FD(is)g(an)f(hexadecimal)g(v)n(alue.)k(Reading)75 -1749 y(this)d(v)n(alue)f(bac)o(k)h(yields)g(the)g(original)e(ob)r(ject) -j(whose)f(lo)q(cation)f(is)h Fu(NNN)p FD(.)75 1855 y -Fu(\(address-of)20 b FB(obj)6 b Fu(\))1241 b FD(pro)q(cedure)75 -1929 y(Returns)15 b(the)f(address)h(of)f Fu(obj)p FD(.)75 -2036 y Fu(\(address?)20 b FB(obj)6 b Fu(\))1285 b FD(pro)q(cedure)75 -2109 y(Returns)15 b Fu(#t)e FD(if)g FB(obj)20 b FD(is)14 -b(an)f(address;)i(returns)h Fu(#f)d FD(otherwise.)75 -2227 y FG(6.18)56 b(Signals)75 2304 y Fz(STk)13 b FD(allo)o(ws)e(the)i -(use)g(to)f(asso)q(ciate)i(handlers)e(to)h(signals.)k(Signal)11 -b(handlers)i(for)f(a)g(giv)o(en)g(signal)f(can)i(ev)o(en)g(b)q(e)75 -2354 y(c)o(hained)i(in)f(a)h(list.)20 b(When)15 b(a)g(signal)f(o)q -(ccurs,)i(the)f(\014rst)h(signal)d(of)i(the)g(list)f(is)h(executed.)23 -b(Unless)16 b(this)e(signal)75 2404 y(yields)g(the)i(sym)o(b)q(ol)d -Fu(break)g FD(the)i(next)g(signal)f(of)g(the)h(list)g(is)f(ev)n -(aluated.)20 b(When)15 b(a)f(signal)g(handler)h(is)f(called,)75 -2454 y(the)g(in)o(teger)h(v)n(alue)e(of)g(this)h(signal)f(is)h(passed)h -(to)f(it)f(as)h(\(the)h(only\))e(parameter.)75 2504 y(The)19 -b(follo)o(wing)e(PO)o(XIX.1)h(constan)o(ts)i(for)f(signal)e(n)o(um)o(b) -q(ers)i(are)g(de\014ned:)29 b Fu(SIGABRT)p FD(,)17 b -Fu(SIGALRM)p FD(,)g Fu(SIGFPE)p FD(,)75 2554 y Fu(SIGHUP)p -FD(,)i Fu(SIGILL)p FD(,)g Fu(SIGINT)p FD(,)g Fu(SIGKILL)p -FD(,)f Fu(SIGPIPE)p FD(,)h Fu(SIGQUIT)p FD(,)g Fu(SIGSEGV)p -FD(,)f Fu(SIGTERM)p FD(,)h Fu(SIGUSR1)p FD(,)h Fu(SIGUSR2)p -FD(,)75 2603 y Fu(SIGCHLD)p FD(,)g Fu(SIGCONT)p FD(,)g -Fu(SIGSTOP)p FD(,)f Fu(SIGTSTP)p FD(,)h Fu(SIGTTIN)p -FD(,)g Fu(SIGTTOU)p FD(.)g(Moreo)o(v)o(er,)k(the)e(follo)o(wing)d -(constan)o(ts,)75 2653 y(whic)o(h)c(are)h(often)g(a)o(v)n(ailable)d(on) -i(most)g(systems)g(are)h(also)f(de\014ned)1147 2638 y -Fy(4)1167 2653 y FD(:)21 b Fu(SIGTRAP)p FD(,)14 b Fu(SIGIOT)p -FD(,)f Fu(SIGEMT)p FD(,)h Fu(SIGBUS)p FD(,)75 2703 y -Fu(SIGSYS)p FD(,)j Fu(SIGURG)p FD(,)f Fu(SIGCLD)p FD(,)h -Fu(SIGIO)p FD(,)g Fu(SIGPOLL)p FD(,)f Fu(SIGXCPU)p FD(,)h -Fu(SIGXFSZ)p FD(,)f Fu(SIGVTALRM)p FD(,)g Fu(SIGPROF)p -FD(,)h Fu(SIGWINCH)p FD(,)75 2753 y Fu(SIGLOST)p FD(.)p -75 2780 705 2 v 121 2807 a Fr(4)139 2819 y Fq(Some)10 -b(of)h(these)f(constan)o(ts)f(ma)o(y)i(b)q(e)g(unde\014ned)e(if)i(they) -f(are)h(not)g(supp)q(orted)e(b)o(y)i(y)o(our)f(system)p -eop +34 33 bop 37 45 a FE(34)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a FI(6.14)56 b(En)n(vironmen)n(ts)37 +280 y FF(En)o(vironmen)o(ts)15 b(are)f(\014rst)h(class)f(ob)s(jects)g +(in)i(STk.)k(The)14 b(follo)o(wing)i(primitiv)o(es)g(are)e(de\014ned)i +(on)e(en)o(viron-)37 336 y(men)o(ts.)37 460 y Fw(\(environment?)23 +b FD(obj)7 b Fw(\))1218 b FF(pro)q(cedure)37 541 y(Returns)16 +b Fw(#t)f FF(if)h FD(obj)22 b FF(is)15 b(an)g(en)o(vironmen)o(t,)h +(otherwise)f(returns)g Fw(#f)p FF(.)37 673 y Fw(\(the-environment)n(\)) +1236 b FF(pro)q(cedure)37 755 y(Returns)16 b(the)g(curren)o(t)f(en)o +(vironmen)o(t.)37 887 y Fw(\(global-environment)n(\))1164 +b FF(pro)q(cedure)37 969 y(Returns)16 b(the)g(\\global")f(en)o +(vironmen)o(t)g(\(i.e.)20 b(the)c(toplev)o(el)g(en)o(vironmen)o(t\).)37 +1101 y Fw(\(parent-environment)22 b FD(env)5 b Fw(\))1067 +b FF(pro)q(cedure)37 1183 y(Returns)16 b(the)g(paren)o(t)f(en)o +(vironmen)o(t)h(of)f FD(env)t FF(.)20 b(If)c(en)o(v)f(is)h(the)g +(\\global")f(en)o(vironmen)o(t)h(\(i.e.)k(the)c(toplev)o(el)37 +1240 y(en)o(vironmen)o(t\),)f Fw(parent-environment)e +FF(returns)i Fw(#f)p FF(.)37 1372 y Fw(\(environment->list)22 +b FD(envir)n(onment)t Fw(\))913 b FF(pro)q(cedure)37 +1447 y(Returns)17 b(a)f(list)g(of)g FD(a-lists)p FF(,)f(represen)o +(ting)i(the)f(bindings)i(in)f FD(envir)n(onment)s FF(.)22 +b(Eac)o(h)16 b FD(a-list)f FF(describ)q(es)j(one)37 1497 +y(lev)o(el)f(of)e(bindings,)i(with)e(the)g(innermost)h(lev)o(el)g +(coming)g(\014rst.)125 1593 y Fv(\(define)k(E)i(\(let)f(\(\(a)g(1\))g +(\(b)g(2\)\))386 1643 y(\(let)g(\(\(c)g(3\)\))430 1693 +y(\(the-environment)o(\)\)\)\))125 1792 y(\(car)g(\(environment->li)o +(st)e(E\)\))i Fu(=)-7 b Fp(\))22 b Fv(\(\(c)f(.)g(3\)\))125 +1892 y(\(cadr)f(\(environment->list)e(E\)\))p Fu(=)-7 +b Fp(\))22 b Fv(\(\(b)f(.)g(2\))h(\(a)f(.)h(1\)\))37 +2117 y Fw(\(procedure-environment)f FD(pr)n(o)n(c)n(e)n(dur)n(e)s +Fw(\))882 b FF(pro)q(cedure)37 2192 y(Returns)18 b(the)g(en)o(vironmen) +o(t)f(asso)q(ciated)h(with)f FD(pr)n(o)n(c)n(e)n(dur)n(e)s +FF(.)26 b Fw(Procedure-environment)14 b FF(returns)k +Fw(#f)e FF(if)37 2242 y FD(pr)n(o)n(c)n(e)n(dur)n(e)j +FF(is)c(not)g(a)g(closure.)125 2338 y Fv(\(define)20 +b(foo)h(\(let)g(\(\(a)g(1\)\))g(\(lambda)g(\(\))g(a\)\)\))125 +2388 y(\(car)g(\(environment->li)o(st)321 2438 y(\(procedure-envir)o +(onmen)o(t)e(foo\)\)\))735 2487 y Fu(=)-7 b Fp(\))22 +b Fv(\(\(a)f(.)g(1\)\))37 2712 y Fw(\(module-environment)h +FD(mo)n(dule)s Fw(\))999 b FF(pro)q(cedure)37 2787 y(Returns)16 +b(the)g(en)o(vironmen)o(t)f(asso)q(ciated)g(to)g(the)g(mo)q(dule)i +FD(mo)n(dule)s FF(.)p eop %%Page: 35 35 -35 34 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(35)p 75 64 1763 2 v 75 179 a FD(See)11 b(y)o(our)f(Unix)f(do)q(cumen) -o(tation)g(for)h(the)g(exact)h(meaning)d(of)h(eac)o(h)i(constan)o(t)f -(or)g([7)o(].)17 b(Use)10 b(sym)o(b)q(olic)f(constan)o(ts)75 -229 y(rather)15 b(than)f(their)g(n)o(umeric)f(v)n(alue)g(if)g(y)o(ou)h -(plan)f(to)h(p)q(ort)g(y)o(our)g(program)e(on)h(another)i(system.)75 -278 y(A)d(sp)q(ecial)h(signal,)e(managed)g(b)o(y)h(the)h(in)o -(terpreter,)h(is)e(also)f(de\014ned:)19 b Fu(SIGHADGC)p -FD(.)10 b(This)i(signal)f(is)h(raised)h(when)75 328 y(the)h(garbage)g -(collector)g(phase)h(terminates.)75 378 y(When)h(the)g(in)o(terpreter)i -(starts)f(running,)e(all)g(signals)g(are)h(sets)i(to)d(their)h(default) -g(v)n(alue,)f(excepted)j Fu(SIGINT)75 428 y FD(\(generally)c(b)q(ound)g -(to)f Fu(C)p FD(on)o(trol-C\))g(whic)o(h)h(is)g(handled)g(sp)q(ecially) -m(.)75 529 y Fu(\(set-signal-handl)o(er!)19 b FB(sig)i(hand)r(ler)t -Fu(\))894 b FD(pro)q(cedure)75 603 y(Replace)14 b(the)h(handler)f(for)f -(signal)g FB(sig)k FD(with)d FB(hand)r(ler)5 b FD(.)18 -b(Handler)c(can)g(b)q(e)144 674 y(-)21 b Fu(#t)13 b FD(to)h(reset)h -(the)g(signal)e(handler)h(for)f FB(sig)18 b FD(to)13 -b(the)i(default)e(system)h(handler.)144 751 y(-)21 b -Fu(#f)15 b FD(to)g(completly)e(ignore)i FB(sig)k FD(\(Note)d(that)f(P)o -(osix.1)f(states)j(that)e Fu(SIGKILL)f FD(and)h Fu(SIGSTOP)e -FD(cannot)j(b)q(e)179 801 y(caugh)o(t)e(or)g(ignored\).)144 -878 y(-)21 b(a)13 b(one)h(parameter)g(pro)q(cedure.)75 -949 y(This)g(pro)q(cedure)i(returns)f(the)g(new)f(handler,)f(or)h -(\(length)g(1\))g(handler)g(list,)f(asso)q(ciated)i(to)e -FB(sig)t FD(.)153 1021 y Ft(\(let*)18 b(\(\(x)136 b(#f\))291 -1067 y(\(handler)16 b(\(lambda)h(\(i\))i(\(set!)e(x)j(#t\)\)\)\))193 -1112 y(\(set-sign)o(al)o(-ha)o(ndl)o(er)o(!)d(|SIGHADG)o(C|)f -(handler\))193 1158 y(\(gc\))193 1204 y(x\))350 1249 -y Fs(=)-6 b Fn(\))19 b Ft(#t)75 1410 y Fu(\(add-signal-handl)o(er!)g -FB(sig)i(hand)r(ler)t Fu(\))894 b FD(pro)q(cedure)75 -1483 y(Adds)18 b FB(hand)r(ler)k FD(to)17 b(the)h(list)f(of)g(handlers) -h(for)f(signal)g FB(sig)s FD(.)29 b(If)17 b(the)h(old)f(signal)f -(handler)h(is)h(a)f(b)q(o)q(olean,)g(this)75 1533 y(pro)q(cedure)g(is)f -(equiv)n(alen)o(t)e(to)h Fu(set-signal-handler!)o FD(.)20 -b(Otherwise,)d(the)f(new)f(handler)h(is)f(added)h(in)f(fron)o(t)75 -1583 y(of)d(the)h(previous)g(list)f(of)g(handler.)17 -b(This)c(pro)q(cedure)h(returns)g(the)f(new)g(handler,)g(or)f(handler)h -(list,)f(asso)q(ciated)75 1633 y(to)i FB(sig)s FD(.)153 -1705 y Ft(\(let*)k(\(\(x)156 b('\(\)\))291 1751 y(\(handler1)16 -b(\(lambda)h(\(i\))h(\(set!)g(x)h(\(cons)f(1)h(x\)\)\)\))291 -1796 y(\(handler2)d(\(lambda)h(\(i\))h(\(set!)g(x)h(\(cons)f(2)h -(x\)\)\)\)\))193 1842 y(\(add-sign)o(al)o(-ha)o(ndl)o(er)o(!)e -(|SIGHADG)o(C|)f(handler1\))193 1888 y(\(add-sign)o(al)o(-ha)o(ndl)o -(er)o(!)h(|SIGHADG)o(C|)f(handler2\))193 1933 y(\(gc\))193 -1979 y(x\))350 2025 y Fs(=)-6 b Fn(\))19 b Ft(\(1)g(2\))153 -2169 y(\(let*)f(\(\(x)156 b('\(\)\))291 2215 y(\(handler1)16 -b(\(lambda)h(\(i\))h(\(set!)g(x)h(\(cons)f(1)h(x\)\)\)\))291 -2260 y(\(handler2)d(\(lambda)h(\(i\))h(\(set!)g(x)h(\(cons)f(2)h(x\)\)) -g('break\)\))o(\))193 2306 y(\(add-sign)o(al)o(-ha)o(ndl)o(er)o(!)e -(|SIGHADG)o(C|)f(handler1\))193 2352 y(\(add-sign)o(al)o(-ha)o(ndl)o -(er)o(!)h(|SIGHADG)o(C|)f(handler2\))193 2397 y(\(gc\))193 -2443 y(x\))350 2489 y Fs(=)-6 b Fn(\))19 b Ft(\(2\))75 -2649 y Fu(\(get-signal-handl)o(ers)m(\))1126 b FD(pro)q(cedure)75 -2699 y Fu(\(get-signal-handl)o(ers)19 b FB(sig)t Fu(\))1051 -b FD(pro)q(cedure)75 2773 y(Returns)21 b(the)g(handlers,)h(or)e(the)h -(list)e(of)h(handlers,)i(asso)q(ciated)f(to)f(the)g(signal)g -FB(sig)s FD(.)37 b(If)20 b FB(sig)j FD(is)d(omitted,)75 -2823 y Fu(get-signal-handle)o(rs)11 b FD(returns)k(a)f(v)o(ector)h(of)e -(all)g(the)h(signal)f(handlers)h(curren)o(tly)h(in)e(e\013ect.)p +35 34 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(35)p 37 64 1838 2 v 125 190 a Fv(\(define-module)19 +b(M)190 240 y(\(define)h(a)i(1\)\))125 290 y(\(car)f(\(environment->li) +o(st)321 340 y(\(module-environm)o(ent)e(\(find-module)g('M\)\)\)\))735 +390 y Fu(=)-7 b Fp(\))22 b Fv(\(\(a)f(.)g(1\)\))37 577 +y Fw(\(symbol-bound?)h FD(symb)n(ol)5 b Fw(\))1123 b +FF(pro)q(cedure)37 634 y Fw(\(symbol-bound?)22 b FD(symb)n(ol)i(envir)n +(onment)t Fw(\))853 b FF(pro)q(cedure)37 714 y(Returns)12 +b Fw(#t)f FF(if)g FD(symb)n(ol)k FF(has)c(a)g(v)m(alue)h(in)g(the)f +(giv)o(en)g FD(envir)n(onment)s FF(,)h(otherwise)f(returns)g +Fw(#f)p FF(.)18 b FD(Envir)n(onment)37 770 y FF(ma)o(y)d(b)q(e)h +(omitted,)f(in)h(whic)o(h)g(case)f(it)g(defaults)h(to)f(the)g(global)h +(en)o(vironmen)o(t.)37 883 y FI(6.15)56 b(Macros)37 969 +y FB(STk)15 b FF(pro)o(vides)h(lo)o(w)f(lev)o(el)h(macros.)37 +1026 y Fn(Note:)35 b Fk(STk)12 b Fu(macros)f(are)h(not)f(the)i(sort)f +(of)f(macros)g(de\014ned)i(in)e(the)h(app)q(endix)g(of)f +Fn(R)1387 1011 y Fm(4)1399 1026 y Fl(RS)r Fu(,)h(but)g(rather)h(the)f +(macros)37 1082 y(one)j(can)f(\014nd)g(in)f(most)g(of)g(Lisp)h +(dialects.)37 1197 y Fw(\(macro)24 b Fo(h)p FF(formals)p +Fo(i)e(h)p FF(b)q(o)q(dy)p Fo(i)p Fw(\))1177 b FF(syn)o(tax)37 +1277 y Fw(Macro)18 b FF(p)q(ermits)g(to)f(create)g(a)h(macro.)27 +b(When)18 b(a)f(macro)g(is)h(called,)i(the)e(whole)g(form)f(\(i.e.)28 +b(the)18 b(macro)37 1334 y(itself)i(and)f(its)g(parameters\))f(is)h +(passed)g(to)f(the)h(macro)f(b)q(o)q(dy)l(.)31 b(Binding)21 +b(asso)q(ciation)e(is)g(done)g(in)h(the)37 1390 y(en)o(vironmen)o(t)c +(of)f(the)h(call.)21 b(The)16 b(result)g(of)f(the)g(binding)j(asso)q +(ciation)d(is)h(called)h(the)f FD(macr)n(o-exp)n(ansion)p +FF(.)37 1447 y(The)f(result)h(of)e(the)h(macro)f(call)i(is)f(the)g +(result)g(of)f(the)h(ev)m(aluation)h(of)e(the)h(macro)f(expansion)h(in) +h(the)f(call)37 1503 y(en)o(vironmen)o(t.)125 1594 y +Fv(\(define)20 b(foo)h(\(macro)g(f)g(\022\(quote)g(,f\)\)\))125 +1643 y(\(foo)g(1)g(2)h(3\))370 b Fu(=)-7 b Fp(\))22 b +Fv(\(foo)f(1)g(2)h(3\))125 1743 y(\(define)e(1+)h(\(macro)g(form)g +(\(list)g(+)g(\(cadr)g(form\))g(1\)\)\))125 1793 y(\(let)g(\(\(x)g +(1\)\))g(\(1+)g(x\)\))174 b Fu(=)-7 b Fp(\))22 b Fv(2)37 +1991 y Fw(\(macro?)h FD(obj)7 b Fw(\))1362 b FF(pro)q(cedure)37 +2071 y(Returns)16 b Fw(#t)f FF(if)h FD(obj)22 b FF(is)15 +b(a)g(macro,)f(otherwise)i(returns)f Fw(#f)p FF(.)37 +2179 y Fw(\(macro-expand-1)22 b FD(form)s Fw(\))1140 +b FF(pro)q(cedure)37 2236 y Fw(\(macro-expand)23 b FD(form)s +Fw(\))1187 b FF(pro)q(cedure)37 2309 y Fw(Macro-expand-1)16 +b FF(returns)i(the)g(macro)f(expansion)i(of)f FD(form)k +FF(if)c(it)g(is)h(a)e(macro)h(call,)h(otherwise)f FD(form)37 +2359 y FF(is)g(returned)g(unc)o(hanged.)27 b Fw(Macro-expand)16 +b FF(is)i(similar)g(to)f Fw(macro-expand-1)p FF(,)f(but)h(rep)q(eately) +h(expand)37 2409 y FD(form)i FF(un)o(til)c(it)f(is)h(no)f(longer)h(a)f +(macro)f(call.)125 2488 y Fv(\(define)20 b(1-)h(\(macro)g(form)g +(\022\(-)43 b(,\(cadr)20 b(form\))h(1\)\)\))125 2538 +y(\(define)f(--)h(\(macro)g(form)g(\022\(1-)g(,\(cadr)f(form\)\)\)\)) +125 2588 y(\(macro-expand-1)e('\(1-)j(10\)\))65 b Fu(=)-7 +b Fp(\))22 b Fv(\(-)f(10)g(1\))125 2638 y(\(macro-expand)62 +b('\(1-)21 b(10\)\))65 b Fu(=)-7 b Fp(\))22 b Fv(\(-)f(10)g(1\))125 +2688 y(\(macro-expand-1)d('\(--)j(10\)\))65 b Fu(=)-7 +b Fp(\))22 b Fv(\(1-)f(10\))125 2738 y(\(macro-expand)62 +b('\(--)21 b(10\)\))65 b Fu(=)-7 b Fp(\))22 b Fv(\(-)f(10)g(1\))p eop %%Page: 36 36 -36 35 bop 75 47 a FC(36)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a FG(6.19)56 b(Hash)19 b(tables)75 -257 y FD(A)14 b(hash)g(table)f(consists)i(of)e(zero)h(or)g(more)f(en)o -(tries,)h(eac)o(h)g(consisting)g(of)f(a)g(k)o(ey)h(and)f(a)h(v)n(alue.) -j(Giv)o(en)c(the)h(k)o(ey)75 307 y(for)f(an)h(en)o(try)m(,)f(the)i -(hashing)e(function)h(can)g(v)o(ery)g(quic)o(kly)f(lo)q(cate)g(the)i -(en)o(try)m(,)e(and)h(hence)h(the)g(corresp)q(onding)75 -356 y(v)n(alue.)23 b(There)17 b(ma)o(y)d(b)q(e)j(at)e(most)g(one)h(en)o -(try)g(in)g(a)f(hash)h(table)g(with)g(a)f(particular)h(k)o(ey)m(,)f -(but)h(man)o(y)e(en)o(tries)75 406 y(ma)o(y)e(ha)o(v)o(e)i(the)g(same)f -(v)n(alue.)75 457 y Fz(STk)i FD(hash)f(tables)h(gro)o(w)e(gracefully)h -(as)g(the)h(n)o(um)o(b)q(er)f(of)g(en)o(tries)h(increases,)h(so)e(that) -g(there)i(are)f(alw)o(a)o(ys)e(less)75 507 y(than)18 -b(three)i(en)o(tries)g(p)q(er)f(hash)g(buc)o(k)o(et,)g(on)g(a)o(v)o -(erage.)31 b(This)19 b(allo)o(ws)e(for)h(fast)g(lo)q(okups)g -(regardless)i(of)e(the)75 557 y(n)o(um)o(b)q(er)13 b(of)g(en)o(tries)i -(in)f(a)f(table.)75 643 y Fl(Note:)32 b Fs(Hash)14 b(table)g -(manipulation)i(pro)q(cedures)f(are)e(built)i(up)q(on)f(the)f -(e\016cien)o(t)h(Tcl)f(hash)h(table)g(pac)o(k)n(age.)75 -750 y Fu(\(make-hash-table)m(\))1213 b FD(pro)q(cedure)75 -800 y Fu(\(make-hash-table)18 b FB(c)n(omp)n(arison)s -Fu(\))985 b FD(pro)q(cedure)75 850 y Fu(\(make-hash-table)18 -b FB(c)n(omp)n(arison)k(hash)s Fu(\))883 b FD(pro)q(cedure)75 -924 y Fu(Make-hash-table)15 b FD(admits)i(three)j(di\013eren)o(t)f -(forms.)30 b(The)19 b(most)e(general)i(form)d(admit)h(t)o(w)o(o)h -(argumen)o(ts.)75 974 y(The)c(\014rst)g(argumen)o(t)f(is)g(a)g -(comparison)f(function)i(whic)o(h)f(determine)h(ho)o(w)f(k)o(eys)h(are) -g(compared;)e(the)i(second)75 1024 y(argumen)o(t)h(is)h(a)f(function)h -(whic)o(h)g(computes)f(a)h(hash)g(co)q(de)h(for)e(an)h(ob)r(ject)h(and) -f(returns)h(the)g(hash)f(co)q(de)g(as)75 1074 y(a)f(non)g(negativ)o(e)f -(in)o(teger.)22 b(Ob)r(jets)17 b(with)d(the)i(same)e(hash)h(co)q(de)h -(are)g(stored)g(in)e(an)h(A-list)g(registered)h(in)f(the)75 -1123 y(buc)o(k)o(et)g(corresp)q(onding)f(to)g(the)h(k)o(ey)m(.)75 -1174 y(If)f(omitted,)137 1259 y Fm(\017)21 b Fu(hash)13 -b FD(defaults)h(to)f(the)i Fu(hash-table-hash)c FD(pro)q(cedure.)137 -1346 y Fm(\017)21 b Fu(comparison)33 b FD(defaults)14 -b(to)g(the)g Fu(eq?)g FD(pro)q(cedure)75 1427 y(Consequen)o(tly)m(,)153 -1509 y Ft(\(define)j(h)j(\(make-has)o(h-)o(tab)o(le)o(\)\))75 -1636 y FD(is)14 b(equiv)n(alen)o(t)f(to)153 1718 y Ft(\(define)k(h)j -(\(make-has)o(h-)o(tab)o(le)c(eq?)i(hash-table-)o(ha)o(sh\))o(\))75 -1845 y FD(Another)d(in)o(teresting)f(example)f(is)153 -1927 y Ft(\(define)k(h)j(\(make-has)o(h-)o(tab)o(le)c(string-ci=)o(?)g -(string-leng)o(th)o(\)\))75 2054 y FD(whic)o(h)k(de\014nes)i(a)e(new)h -(hash)g(table)f(whic)o(h)g(uses)i Fu(string-ci=?)36 b -FD(for)20 b(comparing)e(k)o(eys.)38 b(Here,)23 b(w)o(e)e(use)75 -2099 y(the)d(string-length)g(as)g(a)f(\(v)o(ery)h(simple\))f(hashing)g -(function.)29 b(Of)18 b(course,)h(a)e(function)h(whic)o(h)f(giv)o(es)h -(a)f(k)o(ey)75 2145 y(dep)q(ending)e(of)g(the)g(c)o(haracters)i(comp)q -(osing)c(the)i(string)g(giv)o(es)g(a)g(b)q(etter)h(repartition)f(and)f -(should)h(probably)75 2191 y(enhance)f(p)q(erformances.)k(F)m(or)12 -b(instance,)i(the)f(follo)o(wing)d(call)i(to)h Fu(make-hash-table)c -FD(should)k(return)h(a)e(more)75 2236 y(e\016cien)o(t,)i(ev)o(en)g(if)f -(not)h(p)q(erfect,)h(hash)f(table:)153 2318 y Ft(\(make-hash-)o(ta)o -(ble)232 2364 y(string-ci)o(=?)232 2410 y(\(lambda)j(\(s\))271 -2455 y(\(let)h(\(\(len)g(\(string-l)o(eng)o(th)e(s\)\)\))310 -2501 y(\(do)j(\(\(h)f(0\))39 b(\(i)19 b(0)g(\(+)g(i)g(1\)\)\))389 -2547 y(\(\(=)f(i)i(len\))e(h\))350 2592 y(\(set!)f(h)j(\(+)e(h)i -(\(char->i)o(nte)o(ger)644 2638 y(\(char-dow)o(nca)o(se)c(\(string-re)o -(f)g(s)k(i\)\)\)\)\)\)\)\))o(\))75 2769 y Fl(Note:)31 -b Fs(Hash)13 b(tables)g(with)f(a)g(comparison)i(function)g(equal)f(to)f -Ft(eq?)e Fs(or)i Ft(string=?)i Fs(are)e(handled)i(in)f(an)f(more)g -(e\016cien)o(t)75 2819 y(w)o(a)o(y)h(\(in)h(fact,)e(they)h(don't)h(use) -f(the)g Ft(hash-table)o(-ha)o(sh)c Fs(fucn)o(tion)14 -b(to)f(sp)q(eed)h(up)g(hash)g(table)g(retriev)n(als\).)p -eop +36 35 bop 37 45 a FE(36)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a Fw(\(macro-expand)23 b FD(form)s +Fw(\))1187 b FF(pro)q(cedure)37 264 y(Returns)20 b(the)f(macro)f +(expansion)i(of)f FD(form)k FF(if)c(it)g(is)h(a)e(macro)h(call,)h +(otherwise)g FD(form)i FF(is)e(returned)f(un-)37 314 +y(c)o(hanged.)i(Macro)14 b(expansion)i(con)o(tin)o(ue)g(un)o(til,)g +(the)f(form)g(obtained)g(is)125 400 y Fv(\(define)20 +b(1-)h(\(macro)g(form)g(\(list)g('-)g(\(cadr)g(form\))g(1\)\)\))125 +450 y(\(macro-expand)e('\(1-)i(10\)\))108 b Fu(=)-7 b +Fp(\))22 b Fv(\(-)f(10)g(1\))37 653 y Fw(\(macro-body)i +FD(macr)n(o)s Fw(\))1207 b FF(pro)q(cedure)37 726 y(Returns)16 +b(the)g(b)q(o)q(dy)f(of)g FD(macr)n(o)125 813 y Fv(\(macro-body)k(1+\)) +735 863 y Fu(=)-7 b Fp(\))22 b Fv(\(macro)e(form)h(\(list)g(+)g(\(cadr) +g(form\))g(1\)\))37 1065 y Fw(\(define-macro)i FD(\()p +Fo(h)p FF(name)p Fo(i)f(h)p FF(formals)p Fo(i)o FD(\))i +Fo(h)p FF(b)q(o)q(dy)p Fo(i)p Fw(\))816 b FF(macro)37 +1139 y Fw(Define-macro)15 b FF(is)h(a)g(macro)f(whic)o(h)i(p)q(ermits)g +(to)e(de\014ne)j(a)d(macro)h(more)f(easily)i(than)f(with)h(the)f +Fw(macro)37 1189 y FF(form.)k(It)15 b(is)h(similar)g(to)f(the)g +Fw(defmacro)f FF(of)h(Common)f(Lisp)i([6].)125 1275 y +Fv(\(define-macro)j(\(incr)i(x\))g(\022\(set!)f(,x)i(\(+)f(,x)h +(1\)\)\))125 1325 y(\(let)f(\(\(a)g(1\)\))g(\(incr)g(a\))g(a\))87 +b Fu(=)-7 b Fp(\))22 b Fv(2)125 1425 y(\(define-macro)d(\(when)i(test)f +(.)i(body\))168 1474 y(\022\(if)f(,test)g(,@\(if)g(\(null?)f(\(cdr)h +(body\)\))g(body)g(\022\(\(begin)f(,@body\)\)\)\)\))125 +1524 y(\(macro-expand)f('\(when)h(a)i(b\)\))43 b Fu(=)-7 +b Fp(\))22 b Fv(\(if)f(a)g(b\))125 1574 y(\(macro-expand)e('\(when)h(a) +i(b)f(c)h(d\)\))735 1624 y Fu(=)-7 b Fp(\))22 b Fv(\(if)f(a)g(\(begin)g +(b)g(c)h(d\)\))37 1767 y Fn(Note:)39 b Fu(Calls)13 b(to)h(macros)g +(de\014ned)h(b)o(y)f Fv(define-macro)e Fu(are)j(ph)o(ysically)e +(replaced)i(b)o(y)f(their)h(macro-expansion)e(if)37 1823 +y(the)i(v)n(ariable)d Fv(*debug*)h Fu(is)g Fv(#f)g Fu(\(i.e.)18 +b(their)c(b)q(o)q(dy)g(is)f(\\in-lined")g(in)g(the)h(macro)f(call\).)k +(T)m(o)c(a)o(v)o(oid)f(this)i(feature,)g(and)37 1880 +y(to)g(ease)h(debugging,)e(y)o(ou)g(ha)o(v)o(e)h(to)g(set)h(this)f(v)n +(ariable)e(to)i Fv(#t)p Fu(.)k(\(See)d(also)e(6.25\).)37 +2001 y FI(6.16)56 b(System)17 b(pro)r(cedures)37 2086 +y FF(This)f(section)g(lists)g(a)f(set)g(of)g(pro)q(cedures)h(whic)o(h)g +(p)q(ermits)f(to)g(access)g(some)g(system)g(in)o(ternals.)37 +2203 y Fw(\(expand-file-name)22 b FD(string)t Fw(\))1070 +b FF(pro)q(cedure)37 2283 y Fw(Expand-file-name)14 b +FF(expands)j(the)g(\014lename)g(giv)o(en)g(in)g FD(string)i +FF(to)d(an)g(absolute)g(path.)23 b(This)17 b(function)37 +2340 y(understands)f(the)f FD(tilde)i(c)n(onvention)c +FF(for)i(\014lenames.)125 2439 y Fv(;;)21 b(Current)f(directory)g(is)i +(/users/eg/STk)125 2488 y(\(expand-file-nam)o(e)d(".."\))343 +2538 y Fu(=)-7 b Fp(\))21 b Fv("/users/eg")125 2588 y +(\(expand-file-nam)o(e)e("~root/bin\))343 2638 y Fu(=)-7 +b Fp(\))21 b Fv("/bin")125 2688 y(\(expand-file-nam)o(e)e("~/STk\)")343 +2738 y Fu(=)-7 b Fp(\))21 b Fv("/users/eg/STk")p eop %%Page: 37 37 -37 36 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(37)p 75 64 1763 2 v 75 179 a Fu(\(hash-table?)19 b -FB(obj)6 b Fu(\))1220 b FD(pro)q(cedure)75 255 y(Returns)15 -b Fu(#t)e FD(if)g FB(obj)20 b FD(is)14 b(a)f(hash)i(table,)e(returns)i -Fu(#f)f FD(otherwise.)75 382 y Fu(\(hash-table-hash)k -FB(obj)6 b Fu(\))1133 b FD(pro)q(cedure)75 458 y Fu(hash-table-hash)8 -b FD(computes)j(a)g(hash)h(co)q(de)g(for)f(an)g(ob)r(ject)h(and)f -(returns)i(the)f(hash)f(co)q(de)h(as)g(a)e(non)i(negativ)o(e)75 -508 y(in)o(teger.)18 b(A)c(prop)q(ert)o(y)h(of)e Fu(hash-table-hash)e -FD(is)j(that)179 600 y Fu(\(equal?)42 b(x)22 b(y\))13 -b FD(implies)f Fu(\(equal?)42 b(\(hash-table-hash)18 -b(x\))k(\(hash-table-hash)c(y\))75 691 y FD(as)c(the)g(the)h(Common)c -(Lisp)i Fu(sxhash)g FD(function)g(from)g(whic)o(h)g(this)h(pro)q -(cedure)i(is)e(mo)q(deled.)75 818 y Fu(\(hash-table-put!)k -FB(hash)23 b(key)f(value)s Fu(\))914 b FD(pro)q(cedure)75 -895 y Fu(Hash-table-put!)17 b FD(en)o(ters)k(an)f(asso)q(ciation)f(b)q -(et)o(w)o(een)i FB(key)j FD(and)c FB(value)j FD(in)c(the)i -FB(hash)i FD(table.)36 b(The)20 b(v)n(alue)75 944 y(returned)c(b)o(y)d -Fu(hash-table-put!)e FD(is)j(unde\014ned.)75 1071 y Fu -(\(hash-table-get)19 b FB(hash)j(key)t Fu(\))1049 b FD(pro)q(cedure)75 -1121 y Fu(\(hash-table-get)19 b FB(hash)j(key)g(default)t -Fu(\))906 b FD(pro)q(cedure)75 1193 y Fu(Hash-table-get)13 -b FD(returns)18 b(the)f(v)n(alue)f(asso)q(ciated)h(with)f -FB(key)k FD(in)c(the)h(giv)o(en)f FB(hash)k FD(table.)25 -b(If)16 b(no)g(v)n(alue)f(has)75 1239 y(b)q(een)h(asso)q(ciated)g(with) -f FB(key)k FD(in)c FB(hash)s FD(,)g(the)h(sp)q(eci\014ed)h -FB(default)i FD(is)c(returned)i(if)d(giv)o(en;)h(otherwise)h(an)f -(error)h(is)75 1285 y(raised.)153 1375 y Ft(\(define)h(h1)i -(\(make-hash)o(-ta)o(bl)o(e\)\))153 1421 y(\(hash-table)o(-p)o(ut!)d -(h1)j('foo)f(\(list)f(1)j(2)f(3\)\))153 1466 y(\(hash-table)o(-g)o(et) -36 b(h1)19 b('foo\))350 1512 y Fs(=)-6 b Fn(\))19 b Ft(\(1)g(2)g(3\)) -153 1558 y(\(hash-table)o(-g)o(et)36 b(h1)19 b('bar)f('absent\))350 -1603 y Fs(=)-6 b Fn(\))19 b Ft(absent)153 1649 y(\(hash-table)o(-g)o -(et)36 b(h1)19 b('bar\))350 1695 y Fs(=)-6 b Fn(\))19 -b Fi(error)153 1740 y Ft(\(hash-table)o(-p)o(ut!)d(h1)j('\(a)f(b)h(c\)) -g('present\))153 1786 y(\(hash-table)o(-g)o(et)36 b(h1)19 -b('\(a)f(b)h(c\))g('absent\))350 1832 y Fs(=)-6 b Fn(\))19 -b Ft('absent)153 1923 y(\(define)e(h2)i(\(make-hash)o(-ta)o(bl)o(e)e -(equal?\)\))153 1969 y(\(hash-table)o(-p)o(ut!)f(h2)j('\(a)f(b)h(c\))g -('present\))153 2014 y(\(hash-table)o(-g)o(et)36 b(h2)19 -b('\(a)f(b)h(c\)\))350 2060 y Fs(=)-6 b Fn(\))19 b Ft('present)75 -2271 y Fu(\(hash-table-remov)o(e!)g FB(hash)j(key)t Fu(\))962 -b FD(pro)q(cedure)75 2348 y FB(hash)20 b FD(m)o(ust)15 -b(b)q(e)i(a)f(hash)h(table)f(con)o(taining)f(an)h(en)o(try)h(for)f -FB(key)t FD(.)25 b Fu(Hash-table-remov)o(e!)13 b FD(deletes)18 -b(the)f(en)o(try)75 2398 y(for)d FB(key)j FD(in)d FB(hash)t -FD(,)f(if)g(it)h(exists.)k(Result)c(of)g Fu(Hash-table-remo)o(ve!)h -FD(is)f(unsp)q(eci\014ed.)153 2499 y Ft(\(define)j(h)j(\(make-has)o(h-) -o(tab)o(le)o(\)\))153 2545 y(\(hash-table)o(-p)o(ut!)c(h)j('foo)f -(\(list)g(1)h(2)g(3\)\))153 2591 y(\(hash-table)o(-g)o(et)d(h)k('foo\)) -350 2636 y Fs(=)-6 b Fn(\))19 b Ft(\(1)g(2)g(3\))153 -2682 y(\(hash-table)o(-r)o(emo)o(ve!)d(h)j('foo\))153 -2728 y(\(hash-table)o(-g)o(et)d(h)k('foo)e('absent\))350 -2773 y Fs(=)-6 b Fn(\))19 b Ft(absent)p eop +37 36 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(37)p 37 64 1838 2 v 37 190 a Fw(\(canonical-path)22 +b FD(p)n(ath)s Fw(\))1151 b FF(pro)q(cedure)37 271 y(Expands)21 +b(all)f(sym)o(b)q(olic)h(links)g(in)g FD(p)n(ath)i FF(and)d(returns)g +(its)g(canonicalized)i(absolute)e(pathname.)34 b(The)37 +327 y(resulting)25 b(path)e(do)g(not)g(ha)o(v)o(e)g(sym)o(b)q(olic)h +(links.)45 b(If)24 b FD(p)n(ath)j FF(do)q(esn't)c(designate)h(a)f(v)m +(alid)h(pathname,)37 384 y FD(c)n(anonic)n(al-p)n(ath)18 +b FF(returns)d Fw(#f)p FF(.)37 502 y Fw(\(dirname)23 +b FD(string)t Fw(\))1285 b FF(pro)q(cedure)37 575 y(Returns)16 +b(a)e(string)h(con)o(taining)h(all)f(but)g(the)g(last)g(comp)q(onen)o +(t)g(of)f(the)h(path)g(name)g(giv)o(en)g(in)h FD(string)s +FF(.)125 663 y Fv(\(dirname)k("/a/b/c.stk"\))343 713 +y Fu(=)-7 b Fp(\))21 b Fv("/a/b")37 918 y Fw(\(basename)i +FD(string)t Fw(\))1261 b FF(pro)q(cedure)37 992 y(Returns)16 +b(a)f(string)g(con)o(taining)h(the)g(last)f(comp)q(onen)o(t)g(of)g(the) +g(path)g(name)g(giv)o(en)h(in)g FD(string)s FF(.)125 +1079 y Fv(\(basname)k("/a/b/c.stk"\))343 1129 y Fu(=)-7 +b Fp(\))21 b Fv("c.stk")37 1335 y Fw(\(decompose-file-name)h +FD(string)t Fw(\))998 b FF(pro)q(cedure)37 1408 y(Returns)17 +b(an)g(\\explo)q(ded")g(list)g(of)f(the)h(path)f(name)g(comp)q(onen)o +(ts)h(giv)o(en)g(in)g FD(string)s FF(.)24 b(The)16 b(\014rst)g(elemen)o +(t)37 1458 y(in)h(the)f(list)h(denotes)f(if)g(the)g(giv)o(en)g +FD(string)j FF(is)e(an)f(absolute)g(path)g(or)f(a)g(relativ)o(e)i(one,) +f(b)q(eing)h Fw("/")e FF(or)g Fw(".")37 1508 y FF(resp)q(ectiv)o(ely)l +(.)22 b(Eac)o(h)15 b(comp)q(onen)o(t)h(of)e(this)i(list)g(is)g(a)f +(string.)125 1596 y Fv(\(decompose-file-)o(name)j("/a/b/c.stk"\))343 +1645 y Fu(=)-7 b Fp(\))21 b Fv(\("/")g("a")g("b")h("c.stk"\))125 +1695 y(\(decompose-file-)o(name)c("a/b/c.stk"\))343 1745 +y Fu(=)-7 b Fp(\))21 b Fv(\(".")g("a")g("b")h("c.stk"\))37 +1951 y Fw(\(file-is-directory?)g FD(string)t Fw(\))1022 +b FF(pro)q(cedure)37 2007 y Fw(\(file-is-regular?)22 +b FD(string)t Fw(\))1070 b FF(pro)q(cedure)37 2063 y +Fw(\(file-is-readable?)22 b FD(string)t Fw(\))1046 b +FF(pro)q(cedure)37 2120 y Fw(\(file-is-writable?)22 b +FD(string)t Fw(\))1046 b FF(pro)q(cedure)37 2176 y Fw +(\(file-is-executable?)22 b FD(string)t Fw(\))998 b FF(pro)q(cedure)37 +2233 y Fw(\(file-exists?)23 b FD(string)t Fw(\))1165 +b FF(pro)q(cedure)37 2313 y(Returns)14 b Fw(#t)g FF(if)f(the)h +(predicate)g(is)g(true)g(for)e(the)i(path)f(name)h(giv)o(en)g(in)g +FD(string)s FF(;)g(returns)f Fw(#f)g FF(otherwise)h(\(or)37 +2369 y(if)i FD(string)j FF(denotes)c(a)g(\014le)h(whic)o(h)g(do)q(es)g +(not)e(exist\).)37 2487 y Fw(\(glob)24 b Fz(patter)q(n)330 +2494 y FA(1)374 2487 y Fz(patter)q(n)523 2494 y FA(2)568 +2487 y Fz(:)8 b(:)g(:)d Fw(\))1027 b FF(pro)q(cedure)37 +2568 y(The)14 b(co)q(de)g(for)e Fw(glob)h FF(is)g(tak)o(en)g(from)f +(the)i(Tcl)f(library)l(.)21 b(It)13 b(p)q(erforms)g(\014le)h(name)f +(\\globbing")h(in)g(a)f(fashion)37 2624 y(similar)19 +b(to)e(the)h(csh)g(shell.)29 b Fw(Glob)17 b FF(returns)h(a)f(list)h(of) +g(the)f(\014lenames)i(that)e(matc)o(h)g(at)g(least)h(one)g(of)f(the)37 +2681 y FD(p)n(attern)f FF(argumen)o(ts.)j(The)c FD(p)n(attern)k +FF(argumen)o(ts)14 b(ma)o(y)h(con)o(tain)g(the)g(follo)o(wing)h(sp)q +(ecial)h(c)o(haracters:)106 2787 y Fo(\017)22 b FF(?)f(Matc)o(hes)14 +b(an)o(y)h(single)i(c)o(haracter.)p eop %%Page: 38 38 -38 37 bop 75 47 a FC(38)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(\(hash-table-for-e)o(ach)19 -b FB(hash)j(pr)n(o)n(c)r Fu(\))925 b FD(pro)q(cedure)75 -253 y FB(Pr)n(o)n(c)23 b FD(m)o(ust)e(b)q(e)h(a)f(pro)q(cedure)i -(taking)d(t)o(w)o(o)h(argumen)o(ts.)40 b Fu(Hash-table-for-eac)o(h)18 -b FD(calls)j FB(pr)n(o)n(c)j FD(on)d(eac)o(h)75 303 y(k)o(ey/v)n(alue) -11 b(asso)q(ciation)g(in)h FB(hash)s FD(,)g(with)g(the)g(k)o(ey)g(as)g -(the)g(\014rst)h(argumen)o(t)d(and)i(the)g(v)n(alue)f(as)h(the)h -(second.)18 b(The)75 352 y(v)n(alue)13 b(returned)j(b)o(y)d -Fu(hash-table-for-each)d FD(is)k(unde\014ned.)75 434 -y Fl(Note:)32 b Fs(The)13 b(order)h(of)f(application)j(of)d -Fl(pr)n(o)n(c)h Fs(is)f(unsp)q(eci\014ed.)153 516 y Ft(\(let)19 -b(\(\(h)57 b(\(make-hash)o(-ta)o(bl)o(e\)\))271 561 y(\(sum)18 -b(0\)\))193 607 y(\(hash-tab)o(le)o(-pu)o(t!)e(h)j('foo)f(2\))193 -653 y(\(hash-tab)o(le)o(-pu)o(t!)e(h)j('bar)f(3\))193 -698 y(\(hash-tab)o(le)o(-fo)o(r-e)o(ac)o(h)f(h)i(\(lambda)e(\(key)h -(value\))683 744 y(\(set!)g(sum)g(\(+)h(sum)f(value\)\)\)\))193 -790 y(sum\))350 835 y Fs(=)-6 b Fn(\))19 b Ft(5)75 1025 -y Fu(\(hash-table-map)g FB(hash)j(pr)n(o)n(c)r Fu(\))1034 -b FD(pro)q(cedure)75 1099 y FB(Pr)n(o)n(c)19 b FD(m)o(ust)e(b)q(e)h(a)f -(pro)q(cedure)i(taking)e(t)o(w)o(o)g(argumen)o(ts.)28 -b Fu(Hash-table-map)14 b FD(calls)j FB(pr)n(o)n(c)j FD(on)d(eac)o(h)h -(en)o(try)g(in)75 1149 y FB(hash)t FD(,)d(with)g(the)h(en)o(try's)f(k)o -(ey)h(as)f(the)h(\014rst)g(argumen)o(t)e(and)h(the)h(en)o(try's)g(v)n -(alue)f(as)g(the)h(second.)23 b(The)16 b(result)75 1199 -y(of)d Fu(hash-table-map)e FD(is)j(a)g(list)f(of)g(the)i(v)n(alues)e -(returned)j(b)o(y)e FB(pr)n(o)n(c)r FD(,)f(in)h(unsp)q(eci\014ed)h -(order.)75 1281 y Fl(Note:)32 b Fs(The)13 b(order)h(of)f(application)j -(of)d Fl(pr)n(o)n(c)h Fs(is)f(unsp)q(eci\014ed.)153 1362 -y Ft(\(let)19 b(\(\(h)f(\(make-hash)o(-t)o(abl)o(e\))o(\)\))193 -1408 y(\(dotimes)e(\(i)j(5\))232 1453 y(\(hash-tab)o(le-)o(put)o(!)d(h) -k(i)f(\(number->)o(str)o(in)o(g)e(i\)\)\))193 1499 y(\(hash-tab)o(le)o -(-ma)o(p)g(h)i(\(lambda)e(\(key)h(value\))605 1545 y(\(cons)f(key)i -(value\)\)\)\))350 1590 y Fs(=)-6 b Fn(\))19 b Ft(\(\(0)g(.)g("0"\))f -(\(3)h(.)g("3"\))f(\(2)h(.)g("2"\))f(\(1)h(.)g("1"\))f(\(4)h(.)g -("4"\)\))75 1780 y Fu(\(hash-table->list)f FB(hash)s -Fu(\))1087 b FD(pro)q(cedure)75 1850 y Fu(hash-table->list)8 -b FD(returns)13 b(an)f(\\asso)q(ciation)e(list")h(built)g(from)f(the)i -(en)o(tries)h(in)e FB(hash)s FD(.)18 b(Eac)o(h)11 b(en)o(try)i(in)e -FB(hash)75 1896 y FD(will)i(b)q(e)j(represen)o(ted)i(as)d(a)f(pair)h -(whose)g FB(c)n(ar)k FD(is)c(the)g(en)o(try's)h(k)o(ey)f(and)g(whose)g -FB(c)n(dr)k FD(is)c(its)g(v)n(alue.)20 b Fl(Note:)36 -b Fs(The)75 1941 y(order)13 b(of)g(pairs)h(in)g(the)f(resulting)i(list) -g(is)e(unsp)q(eci\014ed.)153 2023 y Ft(\(let)19 b(\(\(h)f(\(make-hash)o -(-t)o(abl)o(e\))o(\)\))193 2068 y(\(dotimes)e(\(i)j(5\))232 -2114 y(\(hash-tab)o(le-)o(put)o(!)d(h)k(i)f(\(number->)o(str)o(in)o(g)e -(i\)\)\))193 2160 y(\(hash-tab)o(le)o(->l)o(ist)f(h\)\))350 -2205 y Fs(=)-6 b Fn(\))19 b Ft(\(\(0)g(.)g("0"\))f(\(3)h(.)g("3"\))f -(\(2)h(.)g("2"\))f(\(1)h(.)g("1"\))f(\(4)h(.)g("4"\)\))75 -2395 y Fu(\(hash-table-stats)f FB(hash)s Fu(\))1087 b -FD(pro)q(cedure)75 2469 y Fu(Hash-table-stats)12 b FD(returns)17 -b(a)f(string)f(with)h(o)o(v)o(erall)e(information)f(ab)q(out)i -FB(hash)t FD(,)h(suc)o(h)g(as)g(the)g(n)o(um)o(b)q(er)f(of)75 -2519 y(en)o(tries)g(it)e(con)o(tains,)h(the)g(n)o(um)o(b)q(er)f(of)h -(buc)o(k)o(ets)h(in)e(its)h(hash)g(arra)o(y)m(,)f(and)h(the)g -(utilization)e(of)i(the)g(buc)o(k)o(ets.)75 2641 y FG(6.20)56 -b(Regular)18 b(expressions)75 2719 y FD(Regular)9 b(expressions)h(are)g -(\014rst)g(class)g(ob)r(jects)g(in)f Fz(STk)p FD(.)17 -b(A)9 b(regular)h(expression)g(is)f(created)i(b)o(y)e(the)h -Fu(string->regexp)75 2769 y FD(pro)q(cedure.)19 b(Matc)o(hing)12 -b(a)g(regular)g(expression)i(against)d(a)h(string)g(is)g(simply)f(done) -h(b)o(y)g(applying)f(a)h(previously)75 2819 y(created)k(regular)f -(expression)h(to)f(this)g(string.)20 b(Regular)14 b(expressions)j(are)e -(implemen)o(ted)d(using)j(co)q(de)h(in)e(the)p eop +38 37 bop 37 45 a FE(38)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 106 190 a Fo(\017)22 b Fw(*)15 b FF(Matc)o(hes)g(an)o(y) +g(sequence)h(of)f(zero)g(or)f(more)h(c)o(haracters.)106 +284 y Fo(\017)22 b Fw([)p FF(c)o(hars)p Fw(])14 b FF(Matc)o(hes)g(an)o +(y)g(single)h(c)o(haracter)f(in)h(c)o(hars.)k(If)c(c)o(hars)f(con)o +(tains)h(a)f(sequence)h(of)f(the)h(form)151 340 y Fw(a-b)g +FF(then)g(an)o(y)g(c)o(haracter)g(b)q(et)o(w)o(een)g +Fw(a)g FF(and)h Fw(b)f FF(\(inclusiv)o(e\))i(will)f(matc)o(h.)106 +433 y Fo(\017)22 b Fw(\\)p FF(x)15 b(Matc)o(hes)g(the)g(c)o(haracter)f +Fw(x)p FF(.)106 526 y Fo(\017)22 b(f)p FF(a,b,...)p Fo(g)13 +b FF(Matc)o(hes)h(an)o(y)h(of)g(the)g(strings)g Fw(a)p +FF(,)g Fw(b)p FF(,)g(etc.)37 631 y(As)20 b(with)f(csh,)i(a)d(\\.")32 +b(at)18 b(the)i(b)q(eginning)h(of)e(a)g(\014le's)h(name)f(or)g(just)g +(after)f(a)h(\\/")f(m)o(ust)h(b)q(e)h(matc)o(hed)37 687 +y(explicitly)e(or)d(with)h(a)f Fo(fg)f FF(construct.)20 +b(In)c(addition,)f(all)i(\\/")d(c)o(haracters)g(m)o(ust)h(b)q(e)h(matc) +o(hed)f(explicitly)l(.)37 744 y(If)22 b(the)f(\014rst)g(c)o(haracter)f +(in)i(a)f(pattern)g(is)g(\\)p Fw(~)p FF(")g(then)g(it)h(refers)f(to)f +(the)h(home)h(directory)f(of)g(the)g(user)37 800 y(whose)16 +b(name)f(follo)o(ws)h(the)f(\\)p Fw(~)p FF(".)20 b(If)15 +b(the)h(\\)p Fw(~)p FF(")f(is)h(follo)o(w)o(ed)f(immediately)i(b)o(y)f +(\\/")e(then)i(the)f(v)m(alue)i(of)e(the)37 856 y(en)o(vironmen)o(t)h +(v)m(ariable)h(HOME)e(is)g(used.)37 913 y Fw(Glob)20 +b FF(di\013ers)f(from)g(csh)h(globbing)h(in)g(t)o(w)o(o)d(w)o(a)o(ys.) +32 b(First,)20 b(it)g(do)q(es)g(not)f(sort)g(its)h(result)g(list)g +(\(use)g(the)37 969 y Fw(sort)g FF(pro)q(cedure)h(if)f(y)o(ou)g(w)o(an) +o(t)f(the)h(list)h(sorted\).)34 b(Second,)21 b(glob)g(only)f(returns)g +(the)g(names)g(of)g(\014les)37 1026 y(that)15 b(actually)i(exist;)e(in) +i(csh)f(no)f(c)o(hec)o(k)h(for)f(existence)i(is)f(made)g(unless)g(a)g +(pattern)f(con)o(tains)g(a)h(?,)f Fw(*)p FF(,)g(or)37 +1082 y Fw([])p FF(construct.)37 1197 y Fw(\(remove-file)23 +b FD(string)t Fw(\))1189 b FF(pro)q(cedure)37 1277 y(Remo)o(v)o(es)13 +b(the)g(\014le)h(whose)f(path)g(name)g(is)h(giv)o(en)f(in)h +FD(string)s FF(.)19 b(The)14 b(result)f(of)g Fw(remove-file)e +FF(is)i(unde\014ned.)37 1449 y Fw(\(rename-file)23 b +Fz(str)q(ing)472 1456 y FA(1)515 1449 y Fz(str)q(ing)639 +1456 y FA(2)659 1449 y Fw(\))996 b FF(pro)q(cedure)37 +1529 y(Renames)14 b(the)g(\014le)g(whose)f(path-name)h(is)f(con)o +(tained)h(in)g Fz(str)q(ing)1156 1536 y FA(1)1190 1529 +y FF(in)g(the)f(path)g(name)h(giv)o(en)f(b)o(y)h Fz(str)q(ing)1843 +1536 y FA(2)1862 1529 y FF(.)37 1586 y(The)i(result)g(of)e +Fw(rename-file)g FF(is)i(unde\014ned.)37 1701 y Fw +(\(temporary-file-name)22 b FD(string)t Fw(\))998 b FF(pro)q(cedure)37 +1781 y(Generates)19 b(a)f(unique)j(temp)q(orary)d(\014le)i(name.)30 +b(The)19 b(v)m(alue)h(returned)g(b)o(y)e Fw(temporary-file-name)e +FF(is)37 1837 y(the)g(newly)g(generated)f(name)g(of)g +Fw(#f)g FF(if)h(a)e(unique)j(name)e(cannot)g(b)q(e)h(generated.)37 +1952 y Fw(\(getcwd\))1450 b FF(pro)q(cedure)37 2032 y +Fw(Getcwd)15 b FF(returns)g(a)g(string)g(con)o(taining)h(the)f(curren)o +(t)g(w)o(orking)g(directory)l(.)37 2148 y Fw(\(chdir)24 +b FD(string)t Fw(\))1332 b FF(pro)q(cedure)37 2228 y +Fw(Chdir)15 b FF(c)o(hanges)g(the)g(curren)o(t)h(directory)f(to)g(the)g +(directory)g(giv)o(en)h(in)g FD(string)s FF(.)37 2343 +y Fw(\(getpid)23 b FD(string)t Fw(\))1309 b FF(pro)q(cedure)37 +2423 y(Returns)14 b(the)e(system)g(pro)q(cess)h(n)o(um)o(b)q(er)g(of)f +(the)h(curren)o(t)f FB(STk)g FF(in)o(terpreter)h(\(i.e.)19 +b(the)12 b(Unix)i FD(pid)p FF(\).)19 b(Result)37 2479 +y(is)d(an)f(in)o(teger.)37 2594 y Fw(\(system)23 b FD(string)t +Fw(\))1309 b FF(pro)q(cedure)37 2651 y Fw(\(!)24 b FD(string)t +Fw(\))1428 b FF(pro)q(cedure)37 2731 y(Sends)15 b(the)f(giv)o(en)h +FD(string)i FF(to)d(the)g(system)f(shell)j FD(/bin/sh)s +FF(.)k(The)14 b(result)g(of)g Fw(system)f FF(is)i(the)f(in)o(teger)g +(status)37 2787 y(co)q(de)i(the)g(shell)g(returns.)p +eop %%Page: 39 39 -39 38 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(39)p 75 64 1763 2 v 75 179 a FD(Henry)14 b(Sp)q(encer's)h(pac)o(k)n -(age,)d(and)h(m)o(uc)o(h)f(of)g(the)i(description)f(of)g(regular)g -(expressions)h(b)q(elo)o(w)f(is)g(copied)g(from)75 229 -y(his)h(man)o(ual.)75 335 y Fu(\(string->regexp)19 b -FB(string)t Fu(\))1105 b FD(pro)q(cedure)75 409 y Fu(String->regexp)11 -b FD(compiles)i(the)h FB(string)j FD(and)d(returns)h(the)g(corresp)q -(onding)f(regular)g(expression.)75 472 y(Matc)o(hing)f(a)h(regular)g -(expression)h(against)e(a)g(string)h(is)g(done)g(b)o(y)g(applying)e -(the)j(result)f(of)f Fu(string->regexp)75 522 y FD(to)h(this)h(string.) -21 b(This)14 b(application)f(yields)i(a)f(list)g(of)g(in)o(teger)h -(couples)h(if)d(a)i(matc)o(hing)d(o)q(ccurs;)k(it)f(returns)h -Fu(#f)75 572 y FD(otherwise.)j(Those)13 b(in)o(tegers)g(corresp)q(ond)h -(to)f(indexes)g(in)f(the)h(string)g(whic)o(h)g(matc)o(h)e(the)i -(regular)g(expression.)75 622 y(A)e(regular)g(expression)h(is)f(zero)h -(or)f(more)f FB(br)n(anches)p FD(,)h(separated)h(b)o(y)f(\\)p -Fu(|)p FD(".)16 b(It)11 b(matc)o(hes)g(an)o(ything)f(that)h(matc)o(hes) -75 672 y(one)j(of)f(the)i(branc)o(hes.)75 722 y(A)i(branc)o(h)h(is)f -(zero)h(or)f(more)f FB(pie)n(c)n(es)p FD(,)h(concatenated.)29 -b(It)17 b(matc)o(hes)g(a)g(matc)o(h)f(for)h(the)g(\014rst,)h(follo)o(w) -o(ed)e(b)o(y)h(a)75 772 y(matc)o(h)c(for)g(the)i(second,)f(etc.)75 -822 y(A)j(piece)h(is)e(an)h FB(atom)g FD(p)q(ossibly)g(follo)o(w)o(ed)e -(b)o(y)h(\\)p Fu(*)p FD(",)h(\\)p Fu(+)p FD(",)f(or)h(\\)p -Fu(?)p FD(".)26 b(An)17 b(atom)e(follo)o(w)o(ed)h(b)o(y)g(\\)p -Fu(*)p FD(")g(matc)o(hes)h(a)75 872 y(sequence)f(of)d(0)g(or)h(more)f -(matc)o(hes)g(of)g(the)i(atom.)h(An)e(atom)e(follo)o(w)o(ed)g(b)o(y)h -(\\)p Fu(+)p FD(")g(matc)o(hes)h(a)f(sequence)j(of)d(1)g(or)75 -922 y(more)h(matc)o(hes)i(of)e(the)j(atom.)k(An)15 b(atom)f(follo)o(w)o -(ed)g(b)o(y)h(\\)p Fu(?)p FD(")23 b(matc)o(hes)15 b(a)g(matc)o(h)f(of)h -(the)h(atom,)e(or)h(the)h(n)o(ull)75 972 y(string.)75 -1022 y(An)i(atom)e(is)h(a)g(regular)h(expression)h(in)e(paren)o(theses) -j(\(matc)o(hing)c(a)h(matc)o(h)f(for)i(the)g(regular)g(expression\),)75 -1072 y(a)f FB(r)n(ange)f FD(\(see)j(b)q(elo)o(w\),)e(\\)p -Fu(.)p FD(")26 b(\(matc)o(hing)15 b(an)o(y)i(single)f(c)o(haracter\),)j -(\\)p Fu(^)p FD(")d(\(matc)o(hing)f(the)i(n)o(ull)f(string)h(at)g(the) -75 1122 y(b)q(eginning)f(of)h(the)g(input)g(string\),)h(\\)p -Fu($)p FD(")e(\(matc)o(hing)f(the)j(n)o(ull)e(string)h(at)g(the)h(end)f -(of)g(the)g(input)g(string\),)h(a)75 1172 y(\\)p Fu(\\)p -FD(")c(follo)o(w)o(ed)f(b)o(y)h(a)h(single)f(c)o(haracter)i(\(matc)o -(hing)d(that)h(c)o(haracter\),)i(or)f(a)f(single)g(c)o(haracter)i(with) -e(no)h(other)75 1221 y(signi\014cance)f(\(matc)o(hing)e(that)i(c)o -(haracter\).)75 1272 y(A)j FB(r)n(ange)f FD(is)g(a)h(sequence)h(of)e(c) -o(haracters)i(enclosed)g(in)e(\\)p Fu([])p FD(".)25 b(It)16 -b(normally)e(matc)o(hes)i(an)o(y)g(single)g(c)o(haracter)75 -1321 y(from)c(the)j(sequence.)21 b(If)13 b(the)i(sequence)h(b)q(egins)f -(with)e(\\)p Fu(^)p FD(",)g(it)h(matc)o(hes)f(an)o(y)h(single)g(c)o -(haracter)h FB(not)g FD(from)d(the)75 1371 y(rest)18 -b(of)f(the)g(sequence.)30 b(If)16 b(t)o(w)o(o)h(c)o(haracters)i(in)d -(the)i(sequence)h(are)e(separated)i(b)o(y)d(\\)p Fu(-)p -FD(",)h(this)g(is)g(shorthand)75 1421 y(for)d(the)i(full)d(list)i(of)f -(ASCI)q(I)h(c)o(haracters)h(b)q(et)o(w)o(een)g(them)e(\(e.g.)21 -b(\\)p Fu([0-9])p FD(")13 b(matc)o(hes)h(an)o(y)g(decimal)g(digit\).)19 -b(T)m(o)75 1471 y(include)e(a)g(literal)f(\\)p Fu(])p -FD(")g(in)h(the)g(sequence,)j(mak)o(e)15 b(it)i(the)h(\014rst)g(c)o -(haracter)g(\(follo)o(wing)c(a)j(p)q(ossible)g(\\)p Fu(^)p -FD("\).)27 b(T)m(o)75 1521 y(include)14 b(a)g(literal)f(\\)p -Fu(-)p FD(",)f(mak)o(e)h(it)g(the)i(\014rst)f(or)g(last)g(c)o -(haracter.)75 1571 y(In)k(general)g(there)h(ma)o(y)d(b)q(e)i(more)f -(than)h(one)g(w)o(a)o(y)f(to)h(matc)o(h)f(a)g(regular)h(expression)h -(to)f(an)f(input)h(string.)75 1621 y(Considering)e(only)g(the)h(rules)f -(giv)o(en)g(so)h(far)f(could)g(lead)g(to)g(am)o(biguities.)23 -b(T)m(o)15 b(resolv)o(e)i(those)g(am)o(biguities,)75 -1671 y(the)12 b(generated)i(regular)e(expression)h(c)o(ho)q(oses)g -(among)c(alternativ)o(es)j(using)g(the)g(rule)g(\\\014rst)h(then)f -(longest".)17 b(In)75 1720 y(other)d(w)o(ords,)f(it)g(considers)h(the)g -(p)q(ossible)f(matc)o(hes)g(in)g(order)h(w)o(orking)e(from)f(left)i(to) -g(righ)o(t)g(across)h(the)g(input)75 1770 y(string)h(and)f(the)i -(pattern,)f(and)g(it)f(attempts)h(to)f(matc)o(h)g(longer)h(pieces)h(of) -e(the)h(input)g(string)g(b)q(efore)g(shorter)75 1820 -y(ones.)k(More)14 b(sp)q(eci\014cally)m(,)f(the)i(follo)o(wing)c(rules) -j(apply)g(in)f(decreasing)i(order)g(of)e(priorit)o(y:)126 -1904 y(1.)20 b(If)13 b(a)g(regular)h(expression)h(could)f(matc)o(h)e(t) -o(w)o(o)h(di\013eren)o(t)i(parts)f(of)f(an)h(input)f(string)h(then)g -(it)f(will)g(matc)o(h)179 1954 y(the)h(one)g(that)g(b)q(egins)h -(earliest.)126 2039 y(2.)20 b(If)14 b(a)g(regular)g(expression)i(con)o -(tains)e(\\)p Fu(|)p FD(")g(op)q(erators)h(then)g(the)g(leftmost)e -(matc)o(hing)g(sub-expression)j(is)179 2089 y(c)o(hosen.)126 -2174 y(3.)k(In)14 b(\\)p Fu(*)p FD(",)e(\\)p Fu(+)p FD(",)h(and)h(\\)p -Fu(?)p FD(")j(constructs,)f(longer)e(matc)o(hes)f(are)h(c)o(hosen)h(in) -f(preference)i(to)e(shorter)h(ones.)126 2259 y(4.)20 -b(In)14 b(sequences)i(of)d(expression)i(comp)q(onen)o(ts)f(the)g(comp)q -(onen)o(ts)g(are)g(considered)i(from)c(left)h(to)h(righ)o(t.)153 -2348 y Ft(\(define)j(r1)i(\(string->r)o(ege)o(xp)d("abc"\)\))153 -2394 y(\(r1)j("xyz"\))351 b Fs(=)-6 b Fn(\))19 b Ft(#f)153 -2439 y(\(r1)g("12abc345)o("\))252 b Fs(=)-6 b Fn(\))19 -b Ft(\(\(2)g(5\)\))153 2485 y(\(define)e(r2)i(\(string->r)o(ege)o(xp)d -("[a-z]+"\)\))153 2531 y(\(r2)j("12abc345)o("\))252 b -Fs(=)-6 b Fn(\))19 b Ft(\(\(2)g(5\)\))75 2669 y FD(If)14 -b(the)h(regular)f(expression)i(con)o(tains)e(paren)o(thesis,)i(and)e -(if)g(there)h(is)f(a)h(matc)o(h,)d(the)j(result)h(returned)g(b)o(y)e -(the)75 2719 y(application)h(will)h(con)o(tain)g(sev)o(eral)i(couples)f -(of)f(in)o(tegers.)28 b(First)17 b(couple)g(will)f(b)q(e)h(the)g -(indexes)h(of)e(the)i(\014rst)75 2769 y(longest)c(substring)h(whic)o(h) -f(matc)o(h)f(the)i(regular)f(expression.)20 b(Subsequen)o(t)c(couples,) -f(will)d(b)q(e)j(the)g(indexes)g(of)75 2819 y(all)e(the)h(sub-parts)h -(of)e(this)h(regular)g(expression,)h(in)e(sequence.)p -eop +39 38 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(39)p 37 64 1838 2 v 37 190 a Fw(\(exec)24 b FD(string)t +Fw(\))1356 b FF(pro)q(cedure)37 271 y(Executes)18 b(the)f(command)g +(con)o(tained)g(in)h FD(string)i FF(and)d(redirects)h(its)f(output)g +(in)h(a)e(string.)25 b(This)18 b(string)37 327 y(constitutes)e(the)f +(result)h(of)e Fw(exec)p FF(.)37 420 y Fw(\(getenv)23 +b FD(string)t Fw(\))1309 b FF(pro)q(cedure)37 494 y(Lo)q(oks)14 +b(for)f(the)h(en)o(vironmen)o(t)g(v)m(ariable)h(named)e +FD(string)k FF(and)d(returns)g(its)f(v)m(alue)i(as)e(a)h(string,)f(if)h +(it)g(exists.)37 543 y(Otherwise,)i Fw(getenv)e FF(returns)i +Fw(#f)p FF(.)125 611 y Fv(\(getenv)k("SHELL"\))343 661 +y Fu(=)-7 b Fp(\))21 b Fv("/bin/zsh")37 822 y Fw(\(setenv!)i +FD(var)h(value)s Fw(\))1212 b FF(pro)q(cedure)37 895 +y(Sets)19 b(the)f(en)o(vironmen)o(t)h(v)m(ariable)g FD(var)24 +b FF(to)17 b FD(value)t FF(.)29 b FD(V)m(ar)23 b FF(and)18 +b FD(value)k FF(m)o(ust)17 b(b)q(e)i(strings.)29 b(The)19 +b(result)f(of)37 945 y Fw(setenv!)i FF(is)15 b(unde\014ned.)125 +1013 y Fv(\(getenv)20 b("SHELL"\))343 1062 y Fu(=)-7 +b Fp(\))21 b Fv("/bin/zsh")37 1230 y FI(6.17)56 b(Addresses)37 +1316 y FF(An)13 b FD(addr)n(ess)e FF(is)h(a)g(Sc)o(heme)g(ob)s(ject)f +(whic)o(h)i(con)o(tains)f(a)f(reference)i(to)e(another)g(Sc)o(heme)h +(ob)s(ject.)19 b(This)12 b(t)o(yp)q(e)37 1372 y(can)j(b)q(e)g(view)o +(ed)f(as)g(a)g(kind)h(of)f(p)q(oin)o(ter)g(to)g(a)g(Sc)o(heme)g(ob)s +(ject.)19 b(Addresses,)c(ev)o(en)f(though)g(they)g(are)g(v)o(ery)37 +1429 y(dangerous,)19 b(ha)o(v)o(e)g(b)q(een)g(in)o(tro)q(duced)h(in)g +FB(STk)e FF(so)g(that)g(ob)s(jects)g(that)g(ha)o(v)o(e)g(no)h +(\\readable")g(external)37 1485 y(represen)o(tation)i(can)g(still)i(b)q +(e)e(transformed)f(in)o(to)h(strings)f(and)h(bac)o(k)g(without)g(loss)g +(of)f(information.)37 1541 y(Adresses)c(w)o(ere)f(useful)h(with)f +(pre-3.0)g(v)o(ersion)g(of)g FB(STk)p FF(;)f(their)h(usage)g(is)h(no)o +(w)e FE(stongly)k(discouraged)p FF(,)37 1598 y(unless)h(y)o(ou)f(kno)o +(w)f(what)h(y)o(ou)f(do.)28 b(In)18 b(particular,)h(an)f(address)g(can) +g(designate)g(an)g(ob)s(ject)f(at)g(a)h(time)37 1654 +y(and)e(another)f(one)g(later)g(\(i.e.)20 b(after)15 +b(the)g(garbage)f(collector)i(has)f(mark)o(ed)g(the)g(zone)h(as)f +(free\).)37 1711 y(Addresses)23 b(are)e(prin)o(ted)i(with)f(a)f(sp)q +(ecial)j(syn)o(tax:)32 b Fw(#pNNN)p FF(,)21 b(where)h +Fw(NNN)f FF(is)h(an)g(hexadecimal)h(v)m(alue.)37 1767 +y(Reading)17 b(this)f(v)m(alue)g(bac)o(k)f(yields)i(the)e(original)h +(ob)s(ject)f(whose)g(lo)q(cation)h(is)g Fw(NNN)p FF(.)37 +1879 y Fw(\(address-of)23 b FD(obj)7 b Fw(\))1266 b FF(pro)q(cedure)37 +1959 y(Returns)16 b(the)g(address)f(of)g Fw(obj)p FF(.)37 +2052 y Fw(\(address?)23 b FD(obj)7 b Fw(\))1314 b FF(pro)q(cedure)37 +2132 y(Returns)16 b Fw(#t)f FF(if)h FD(obj)22 b FF(is)15 +b(an)g(address;)g(returns)g Fw(#f)g FF(otherwise.)37 +2232 y FI(6.18)56 b(Signals)37 2318 y FB(STk)18 b FF(allo)o(ws)g(the)g +(use)g(to)g(asso)q(ciate)f(handlers)i(to)f(signals.)29 +b(Signal)19 b(handlers)g(for)e(a)h(giv)o(en)g(signal)h(can)37 +2374 y(ev)o(en)c(b)q(e)g(c)o(hained)g(in)g(a)f(list.)20 +b(When)15 b(a)f(signal)h(o)q(ccurs,)f(the)g(\014rst)g(signal)h(of)f +(the)g(list)h(is)g(executed.)20 b(Unless)37 2431 y(this)f(signal)h +(yields)f(the)g(sym)o(b)q(ol)g Fw(break)e FF(the)i(next)f(signal)h(of)f +(the)h(list)g(is)g(ev)m(aluated.)30 b(When)19 b(a)f(signal)37 +2487 y(handler)f(is)e(called,)i(the)e(in)o(teger)h(v)m(alue)g(of)f +(this)g(signal)h(is)g(passed)g(to)e(it)i(as)e(\(the)h(only\))h +(parameter.)37 2543 y(The)d(follo)o(wing)h(PO)o(XIX.1)e(constan)o(ts)g +(for)g(signal)h(n)o(um)o(b)q(ers)g(are)g(de\014ned:)20 +b Fw(SIGABRT)p FF(,)11 b Fw(SIGALRM)p FF(,)g Fw(SIGFPE)p +FF(,)37 2600 y Fw(SIGHUP)p FF(,)h Fw(SIGILL)p FF(,)f +Fw(SIGINT)p FF(,)g Fw(SIGKILL)p FF(,)g Fw(SIGPIPE)p FF(,)g +Fw(SIGQUIT)p FF(,)g Fw(SIGSEGV)p FF(,)h Fw(SIGTERM)p +FF(,)f Fw(SIGUSR1)p FF(,)g Fw(SIGUSR2)p FF(,)37 2656 +y Fw(SIGCHLD)p FF(,)i Fw(SIGCONT)p FF(,)f Fw(SIGSTOP)p +FF(,)h Fw(SIGTSTP)p FF(,)f Fw(SIGTTIN)p FF(,)g Fw(SIGTTOU)p +FF(.)h(Moreo)o(v)o(er,)f(the)i(follo)o(wing)g(constan)o(ts,)37 +2713 y(whic)o(h)25 b(are)d(often)h(a)o(v)m(ailable)i(on)e(most)g +(systems)f(are)h(also)g(de\014ned)1267 2696 y FA(6)1289 +2713 y FF(:)35 b Fw(SIGTRAP)p FF(,)22 b Fw(SIGIOT)p FF(,)g +Fw(SIGEMT)p FF(,)p 37 2745 735 2 v 89 2771 a Ft(6)107 +2787 y Fs(Some)13 b(of)g(these)g(constan)o(ts)h(ma)o(y)f(b)q(e)h +(unde\014ned)h(if)e(they)g(are)g(not)h(supp)q(orted)g(b)o(y)f(y)o(our)h +(system)p eop %%Page: 40 40 -40 39 bop 75 47 a FC(40)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 153 179 a Ft(\(define)j(r3)i(\(string->r)o(ege)o(xp)d -("\(a*\)\(b*\)c)o("\))o(\))153 224 y(\(r3)j("abc"\))351 -b Fs(=)-6 b Fn(\))19 b Ft(\(\(0)g(3\))f(\(0)h(1\))g(\(1)g(2\)\))153 -270 y(\(r3)g("c"\))391 b Fs(=)-6 b Fn(\))19 b Ft(\(\(0)g(1\))f(\(0)h -(0\))g(\(0)g(0\)\))153 316 y(\(\(string->r)o(eg)o(exp)d("\([a-z]+\))o -(,\([)o(a-)o(z]+)o(\)"\))g("XXabcd,e)o(XX")o(\))703 361 -y Fs(=)-6 b Fn(\))19 b Ft(\(\(2)g(8\))f(\(2)h(6\))g(\(7)g(8\)\))75 -580 y Fu(\(regexp?)h FB(obj)6 b Fu(\))1307 b FD(pro)q(cedure)75 -653 y(Returns)15 b Fu(#t)e FD(if)g FB(obj)20 b FD(is)14 -b(a)f(regular)h(expression)h(created)h(b)o(y)d Fu(string->regexp)p -FD(;)e(otherwise)k(returns)g Fu(#f)p FD(.)153 731 y Ft(\(regexp?)i -(\(string->r)o(eg)o(exp)f("[a-zA-Z])o([a-)o(zA)o(-Z0)o(-9)o(]*")o(\)\)) -703 776 y Fs(=)-6 b Fn(\))39 b Ft(#t)75 949 y Fu(\(regexp-replace)19 -b FB(p)n(attern)i(string)h(substitution)s Fu(\))726 b -FD(pro)q(cedure)75 999 y Fu(\(regexp-replace-a)o(ll)19 -b FB(p)n(attern)i(string)h(substitution)s Fu(\))639 b -FD(pro)q(cedure)75 1068 y Fu(Regexp-replace)13 b FD(matc)o(hes)i(the)h -(regular)g(expression)h FB(p)n(attern)h FD(against)d -FB(string)s FD(.)23 b(If)16 b(there)h(is)e(a)g(matc)o(h,)g(the)75 -1114 y(p)q(ortion)e(of)g FB(string)j FD(whic)o(h)e(matc)o(h)e -FB(p)n(attern)k FD(is)e(replaced)g(b)o(y)f(the)h FB(substitution)j -FD(string.)h(If)13 b(there)i(is)e(no)g(matc)o(h,)75 1159 -y Fu(regexp-replace)j FD(returns)21 b FB(string)h FD(unmo)q(di\014ed.) -32 b(Note)19 b(that)g(the)h(giv)o(en)e FB(p)n(attern)k -FD(could)d(b)q(e)g(here)i(either)75 1205 y(a)16 b(string)f(or)h(a)g -(regular)g(expression.)25 b(If)15 b FB(p)n(attern)k FD(con)o(tains)d -(strings)g(of)g(the)g(form)e(\\)p Fu(\\n)p FD(",)h(where)i -FB(n)f FD(is)g(a)f(digit)75 1261 y(b)q(et)o(w)o(een)e(1)e(and)g(9,)g -(then)h(it)f(is)h(replaced)g(in)f(the)h(substitution)f(with)g(the)h(p)q -(ortion)f(of)g(string)h(that)f(matc)o(hed)g(the)75 1307 -y FB(n)p FD(-th)k(paren)o(thesized)i(sub)q(expression)f(of)e -FB(p)n(attern)p FD(.)20 b(If)15 b FB(n)g FD(is)f(equal)h(to)f(0,)g -(then)i(it)e(is)g(replaced)i(in)e FB(substitution)75 -1353 y FD(with)g(the)g(p)q(ortion)g(of)f FB(string)k -FD(that)d(matc)o(hed)f FB(p)n(attern)s FD(.)153 1424 -y Ft(\(regexp-rep)o(la)o(ce)j("a*b")i("aaabbccc)o(c")e("X"\))703 -1470 y Fs(=)-6 b Fn(\))19 b Ft("Xbcccc")153 1515 y(\(regexp-rep)o(la)o -(ce)d(\(string->r)o(ege)o(xp)g("a*b"\))h("aaabbcccc")f("X"\))703 -1561 y Fs(=)-6 b Fn(\))19 b Ft("Xbcccc")153 1607 y(\(regexp-rep)o(la)o -(ce)d("\(a*\)b")h("aaabbcccc)o(")g("X\\\\1Y"\))703 1652 -y Fs(=)-6 b Fn(\))19 b Ft("XaaaYbccc)o(c")153 1698 y(\(regexp-rep)o(la) -o(ce)d("\(a*\)b")h("aaabbcccc)o(")g("X\\\\0Y"\))703 1744 -y Fs(=)-6 b Fn(\))19 b Ft("XaaabYbcc)o(cc)o(")153 1789 -y(\(regexp-rep)o(la)o(ce)d("\([a-z]*\))g(\([a-z]*\)")h("john)g(brown")h -("\\\\2)g(\\\\1"\))703 1835 y Fs(=)-6 b Fn(\))19 b Ft("brown)e(john")75 -1956 y Fu(Regexp-replace)10 b FD(replaces)k(the)g(\014rst)g(o)q -(ccurence)i(of)c FB(p)n(attern)k FD(in)d FB(string)s -FD(.)18 b(T)m(o)12 b(replace)i FB(al)r(l)e FD(the)i(o)q(ccurences)i(of) -75 2006 y(the)e FB(p)n(attern)p FD(,)g(use)g Fu(regexp-replace-all)153 -2084 y Ft(\(regexp-rep)o(la)o(ce)i("a*b")i("aaabbccc)o(c")e("X"\))703 -2129 y Fs(=)-6 b Fn(\))19 b Ft("Xbcccc")153 2175 y(\(regexp-rep)o(la)o -(ce-)o(all)d("a*b")h("aaabbcccc")f("X"\))703 2221 y Fs(=)-6 -b Fn(\))19 b Ft("XXcccc")75 2405 y FG(6.21)56 b(P)n(attern)18 -b(matc)n(hing)75 2482 y FD(P)o(attern)11 b(matc)o(hing)d(is)i(a)f(k)o -(ey)i(feature)f(of)g(most)e(mo)q(dern)i(functional)f(programmi)o(ng)e -(languages)i(since)i(it)f(allo)o(ws)75 2531 y(clean)16 -b(and)g(secure)j(co)q(de)d(to)g(b)q(e)h(written.)26 b(In)o(ternally)m -(,)15 b(\\pattern-matc)o(hing)g(forms")f(should)i(b)q(e)h(translated)75 -2581 y(\(compiled\))10 b(in)o(to)g(cascades)j(of)e(\\elemen)o(tary)f -(tests")j(where)f(co)q(de)g(is)f(made)f(as)i(e\016cien)o(t)g(as)f(p)q -(ossible,)g(a)o(v)o(oiding)75 2631 y(redundan)o(t)19 -b(tests;)k(the)c Fz(STk)g FD(\\pattern)h(matc)o(hing)c(compiler")i(pro) -o(vides)h(this)1365 2616 y Fy(5)1383 2631 y FD(.)33 b(The)19 -b(tec)o(hnique)h(used)g(is)p 75 2662 705 2 v 121 2689 -a Fr(5)139 2701 y Fq(The)11 b(\\pattern)d(matc)o(hing)h(compiler")f -(has)j(b)q(een)e(written)i(b)o(y)f(Jean-Marie)f(Ge\013ro)o(y)h(and)g -(is)h(part)f(of)h(the)f(Man)o(uel)g(Serrano's)75 2740 -y(Biglo)q(o)i(compiler[8)m(])h(since)f(sev)o(eral)g(y)o(ears.)20 -b(The)13 b(co)q(de)f(\(and)g(do)q(cumen)o(tat)o(ion)o(\))f(included)g -(in)i Fh(STk)h Fq(has)e(b)q(een)g(stolen)g(from)g(the)75 -2779 y(Biglo)q(o)c(pac)o(k)n(age)e(v1.9)i(\(the)g(only)g(di\013erence)e -(b)q(et)o(w)o(een)h(b)q(oth)h(pac)o(k)n(age)f(is)h(the)g(pattern)f -(matc)o(hing)f(of)j(structures)d(whisc)o(h)j(is)f(absen)o(t)75 -2819 y(in)j Fh(STk)p Fq(\).)p eop +40 39 bop 37 45 a FE(40)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a Fw(SIGBUS)p FF(,)d Fw(SIGSYS)p +FF(,)g Fw(SIGURG)p FF(,)g Fw(SIGCLD)p FF(,)g Fw(SIGIO)p +FF(,)g Fw(SIGPOLL)p FF(,)g Fw(SIGXCPU)p FF(,)g Fw(SIGXFSZ)p +FF(,)g Fw(SIGVTALRM)p FF(,)f Fw(SIGPROF)p FF(,)37 247 +y Fw(SIGWINCH)p FF(,)h Fw(SIGLOST)p FF(.)37 304 y(See)19 +b(y)o(our)f(Unix)h(do)q(cumen)o(tation)f(for)g(the)g(exact)g(meaning)h +(of)f(eac)o(h)g(constan)o(t)f(or)h([7)o(].)28 b(Use)19 +b(sym)o(b)q(olic)37 360 y(constan)o(ts)11 b(rather)g(than)h(their)g(n)o +(umeric)g(v)m(alue)h(if)f(y)o(ou)g(plan)g(to)f(p)q(ort)g(y)o(our)g +(program)g(on)h(another)f(system.)37 417 y(A)16 b(sp)q(ecial)h(signal,) +f(managed)f(b)o(y)g(the)g(in)o(terpreter,)g(is)h(also)f(de\014ned:)22 +b Fw(SIGHADGC)p FF(.)14 b(This)i(signal)g(is)f(raised)37 +473 y(when)h(the)f(garbage)g(collector)h(phase)f(terminates.)37 +530 y(When)d(the)e(in)o(terpreter)h(starts)e(running,)k(all)e(signals)h +(are)e(sets)g(to)g(their)i(default)f(v)m(alue,)h(excepted)g +Fw(SIGINT)37 586 y FF(\(generally)k(b)q(ound)h(to)d Fw(C)p +FF(on)o(trol-C\))g(whic)o(h)i(is)g(handled)h(sp)q(ecially)l(.)37 +704 y Fw(\(set-signal-handler!)22 b FD(sig)h(hand)r(ler)5 +b Fw(\))885 b FF(pro)q(cedure)37 784 y(Replace)17 b(the)f(handler)g +(for)e(signal)i FD(sig)j FF(with)d FD(hand)r(ler)5 b +FF(.)20 b(Handler)c(can)f(b)q(e)113 879 y(-)23 b Fw(#t)15 +b FF(to)g(reset)g(the)g(signal)h(handler)g(for)f FD(sig)j +FF(to)d(the)g(default)h(system)f(handler.)113 973 y(-)23 +b Fw(#f)14 b FF(to)g(completly)i(ignore)e FD(sig)k FF(\(Note)c(that)g +(P)o(osix.1)f(states)h(that)g Fw(SIGKILL)f FF(and)i Fw(SIGSTOP)e +FF(cannot)151 1030 y(b)q(e)j(caugh)o(t)f(or)f(ignored\).)113 +1124 y(-)23 b(a)15 b(one)g(parameter)g(pro)q(cedure.)37 +1219 y(This)h(pro)q(cedure)g(returns)f(the)h(new)f(handler,)h(or)f +(\(length)g(1\))g(handler)h(list,)g(asso)q(ciated)f(to)g +FD(sig)s FF(.)125 1320 y Fv(\(let*)20 b(\(\(x)152 b(#f\))277 +1369 y(\(handler)20 b(\(lambda)h(\(i\))g(\(set!)g(x)g(#t\)\)\)\))168 +1419 y(\(set-signal-handler)o(!)e(|SIGHADGC|)h(handler\))168 +1469 y(\(gc\))168 1519 y(x\))343 1569 y Fu(=)-7 b Fp(\))21 +b Fv(#t)37 1788 y Fw(\(add-signal-handler!)h FD(sig)h(hand)r(ler)5 +b Fw(\))885 b FF(pro)q(cedure)37 1868 y(Adds)15 b FD(hand)r(ler)20 +b FF(to)14 b(the)g(list)h(of)f(handlers)i(for)d(signal)j +FD(sig)s FF(.)k(If)14 b(the)h(old)g(signal)g(handler)g(is)g(a)f(b)q(o)q +(olean,)i(this)37 1924 y(pro)q(cedure)k(is)f(equiv)m(alen)o(t)h(to)d +Fw(set-signal-handler!)p FF(.)27 b(Otherwise,)20 b(the)e(new)h(handler) +g(is)g(added)g(in)37 1981 y(fron)o(t)14 b(of)g(the)h(previous)g(list)h +(of)e(handler.)21 b(This)15 b(pro)q(cedure)g(returns)g(the)g(new)f +(handler,)i(or)e(handler)i(list,)37 2037 y(asso)q(ciated)g(to)e +FD(sig)t FF(.)125 2138 y Fv(\(let*)20 b(\(\(x)174 b('\(\)\))277 +2188 y(\(handler1)20 b(\(lambda)g(\(i\))i(\(set!)e(x)i(\(cons)f(1)g +(x\)\)\)\))277 2238 y(\(handler2)f(\(lambda)g(\(i\))i(\(set!)e(x)i +(\(cons)f(2)g(x\)\)\)\)\))168 2287 y(\(add-signal-handler)o(!)e +(|SIGHADGC|)h(handler1\))168 2337 y(\(add-signal-handler)o(!)f +(|SIGHADGC|)h(handler2\))168 2387 y(\(gc\))168 2437 y(x\))343 +2487 y Fu(=)-7 b Fp(\))21 b Fv(\(1)h(2\))125 2688 y(\(let*)e(\(\(x)174 +b('\(\)\))277 2738 y(\(handler1)20 b(\(lambda)g(\(i\))i(\(set!)e(x)i +(\(cons)f(1)g(x\)\)\)\))277 2787 y(\(handler2)f(\(lambda)g(\(i\))i +(\(set!)e(x)i(\(cons)f(2)g(x\)\))h('break\)\)\))p eop %%Page: 41 41 -41 40 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(41)p 75 64 1763 2 v 75 179 a FD(describ)q(ed)16 b(in)e(details)f(in)h -([9)o(],)g(and)g(the)g(co)q(de)h(generated)h(can)e(b)q(e)h(considered)g -(optimal)d(due)i(to)g(the)h(w)o(a)o(y)e(this)75 229 y(\\pattern)h -(compiler")f(w)o(as)g(obtained.)75 278 y(The)h(\\pattern)h(language")e -(allo)o(ws)f(the)j(expression)g(of)e(a)h(wide)f(v)n(ariet)o(y)h(of)f -(patterns,)i(including:)137 363 y Fm(\017)21 b FD(Non-linear)15 -b(patterns:)22 b(pattern)16 b(v)n(ariables)f(can)g(app)q(ear)h(more)f -(than)g(once,)h(allo)o(wing)d(comparison)h(of)179 413 -y(subparts)h(of)e(the)h(datum)f(\(through)h Fu(eq?)p -FD(\))137 493 y Fm(\017)21 b FD(Recursiv)o(e)16 b(patterns)h(on)e -(lists:)21 b(for)15 b(example,)g(c)o(hec)o(king)g(that)h(the)g(datum)e -(is)h(a)h(list)f(of)g(zero)h(or)f(more)179 543 y Fu(a)p -FD(s)f(follo)o(w)o(ed)e(b)o(y)i(zero)g(or)g(more)f Fu(b)p -FD(s.)137 623 y Fm(\017)21 b FD(P)o(attern)15 b(matc)o(hing)d(on)h -(lists)h(as)g(w)o(ell)f(as)h(on)g(v)o(ectors.)75 730 -y FC(P)o(attern)g(Matc)o(hing)g(F)l(acilities)75 807 -y FD(Only)e(t)o(w)o(o)g(sp)q(ecial)g(forms)f(are)h(pro)o(vided)h(for)e -(this:)18 b Fu(match-case)10 b FD(and)i Fu(match-lambda)d -FD(and)j(these)i(also)e(exist,)75 857 y(for)i(example,)e(in)h(Andrew)i -(W)m(righ)o(t)e(and)g(Bruce)j(Duba's)d([10)o(])g(pattern)i(matc)o(hing) -d(pac)o(k)n(age.)75 960 y Fu(\(match-case)20 b Fm(h)p -FD(k)o(ey)p Fm(i)i(h)p FD(clause)576 966 y Fy(1)595 960 -y Fm(i)g(h)p FD(clause)757 966 y Fy(2)776 960 y Fm(i)q -Fx(:)7 b(:)g(:)e Fu(\))849 b FD(syn)o(tax)75 1029 y(In)14 -b(this)g(form,)d Fm(h)p FD(k)o(ey)p Fm(i)k FD(ma)o(y)d(b)q(e)i(an)o(y)g -(expression)h(and)e(eac)o(h)i Fm(h)p FD(clause)p Fm(i)g -FD(has)f(the)g(form)153 1103 y Ft(\()p Fk(<)p Ft(pat)p -Fk(>)k(<)p Ft(expression)540 1107 y Fr(1)555 1103 y Fk(>)h(<)p -Ft(expressio)o(n)833 1107 y Fr(2)847 1103 y Fk(>)h Ft(...\))75 -1226 y FD(A)14 b Fu(match-case)e FD(expression)j(is)f(ev)n(aluated)g -(as)g(follo)o(ws.)j Fx(<)p FD(k)o(ey)p Fx(>)e FD(is)f(ev)n(aluated)g -(and)g(the)g(result)h(is)f(compared)75 1276 y(with)c(eac)o(h)g -(successiv)o(e)i(patterns.)18 b(If)10 b(the)g(pattern)h(in)f(some)f -Fx(<)p FD(clause)p Fx(>)i FD(yields)f(a)g(matc)o(h,)f(then)h(the)h -(expressions)75 1326 y(in)k(that)g Fx(<)p FD(clause)p -Fx(>)h FD(are)f(ev)n(aluated)g(from)f(left)g(to)h(righ)o(t)g(in)g(an)f -(en)o(vironmen)o(t)g(where)j(the)e(pattern)h(v)n(ariables)75 -1376 y(are)c(b)q(ound)f(to)g(the)h(corresp)q(onding)g(subparts)g(of)f -(the)h(datum,)e(and)h(the)h(result)g(of)e(the)i(last)f(expression)i(in) -d(that)75 1426 y Fx(<)p FD(clause)p Fx(>)16 b FD(is)f(returned)i(as)f -(the)f(result)h(of)f(the)h Fu(match-case)d FD(expression.)23 -b(If)15 b(no)g Fx(<)p FD(pat)p Fx(>)h FD(in)f(an)o(y)f -Fx(<)p FD(clause)p Fx(>)75 1475 y FD(matc)o(hes)e(the)h(datum,)d(then,) -j(if)e(there)j(is)e(an)g Fu(else)f FD(clause,)i(its)f(expressions)i -(are)e(ev)n(aluated)g(and)g(the)h(result)g(of)75 1525 -y(the)h(last)f(is)h(the)g(result)g(of)f(the)h(whole)g -Fu(match-case)d FD(expression;)k(otherwise)f(the)g(result)g(of)f(the)i -Fu(match-case)75 1575 y FD(expression)g(is)f(unsp)q(eci\014ed.)75 -1625 y(The)g(equalit)o(y)f(predicate)i(used)g(is)f Fu(eq?)p -FD(.)153 1705 y Ft(\(match-case)i('\(a)i(b)i(a\))193 -1751 y(\(\(?x)e(?x\))g('foo\))193 1797 y(\(\(?x)g(?-)h(?x\))f('bar\)\)) -350 1842 y Fs(=)-6 b Fn(\))19 b Ft(bar)75 2021 y Fu(\(match-lambda)g -Fm(h)p FD(clause)504 2027 y Fy(1)523 2021 y Fm(i)j(h)p -FD(clause)685 2027 y Fy(2)705 2021 y Fm(i)p Fx(:)7 b(:)g(:)e -Fu(\))921 b FD(syn)o(tax)75 2094 y(The)19 b(form)e Fu(match-lambda)p -FD(expands)g(in)o(to)h(a)g(lam)o(b)q(da-expression)g(exp)q(ecting)h(an) -g(argumen)o(t)e(whic)o(h,)j(once)75 2144 y(applied)13 -b(to)h(an)g(expression,)g(b)q(eha)o(v)o(es)h(exactly)f(lik)o(e)f(a)h -Fu(match-case)d FD(expression.)153 2224 y Ft(\(\(match-lam)o(bd)o(a)232 -2270 y(\(\(?x)18 b(?x\))g('foo\))232 2316 y(\(\(?x)g(?-)h(?x\))f -('bar\)\))g('bar\))350 2361 y Fs(=)-6 b Fn(\))19 b Ft(bar)75 -2543 y FC(The)d(pattern)d(language)75 2620 y FD(The)g(syn)o(tax)f(is)h -(presen)o(ted)h(in)e(T)m(able)g(3.)17 b(It)c(is)f(describ)q(ed)j(b)q -(elo)o(w)d(in)g(the)h(same)f(w)o(a)o(y)f(\(and)i(nearly)f(in)g(the)h -(same)75 2669 y(w)o(ords\))h(as)g(in)g([10)o(].)75 2719 -y Fl(Note:)42 b Ft(and,)18 b(or,)g(not,)g(check)13 b -Fs(and)j Ft(kwote)d Fs(m)o(ust)j(b)q(e)f(quoted)i(in)f(order)f(to)h(b)q -(e)f(treated)h(as)f(literals.)26 b(This)16 b(is)g(the)75 -2769 y(only)f(justi\014cation)h(for)e(ha)o(ving)h(the)f -Ft(kwote)e Fs(pattern)i(since,)h(b)o(y)f(con)o(v)o(en)o(tion,)i(an)o(y) -e(atom)g(whic)o(h)h(is)f(not)g(a)g(k)o(eyw)o(ord)h(is)75 -2819 y(quoted.)p eop -%%Page: 42 42 -42 41 bop 75 47 a FC(42)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 100 169 a Fk(<)p Fl(p)n(attern)p Fk(>)d -Fn(\000)-6 b(!)308 b Fl(Matches:)100 215 y Fk(<)p Fs(atom)p -Fk(>)13 b Fn(k)g Ft(\(kwote)37 b Fk(<)p Fs(atom)p Fk(>)p -Ft(\))49 b Fs(an)o(y)14 b(expression)h Ft(eq?)h Fs(to)d -Fk(<)p Fs(atom)p Fk(>)100 261 y Fn(k)g Ft(\(and)e Fk(<)p -Fs(pat)308 265 y Fr(1)336 261 y Fk(>)i Fs(.)6 b(.)g(.)g -Fk(<)p Fs(pat)515 265 y Fg(n)548 261 y Fk(>)p Ft(\))63 -b Fs(if)13 b(all)i(of)d Fk(<)p Fs(pat)878 265 y Fg(i)903 -261 y Fk(>)g Fs(matc)o(h)100 306 y Fn(k)h Ft(\(or)f Fk(<)p -Fs(pat)p Fk(>)h Fs(.)6 b(.)g(.)g Fk(<)p Fs(pat)468 310 -y Fg(n)500 306 y Fk(>)p Ft(\))111 b Fs(if)13 b(an)o(y)h(of)f -Fk(<)p Fs(pat)898 310 y Fr(1)926 306 y Fk(>)g Fs(through)h -Fk(<)p Fs(pat)1199 310 y Fg(n)1231 306 y Fk(>)p Fs(matc)o(h)100 -352 y Fn(k)f Ft(\(not)e Fk(<)p Fs(pat)p Fk(>)p Ft(\))303 -b Fs(if)13 b Fk(<)p Fs(pat)p Fk(>)g Fs(do)q(esn't)h(matc)o(h)100 -398 y Fn(k)f Ft(\(?)j Fk(<)p Fs(predicate)p Fk(>)p Ft(\))241 -b Fs(if)13 b Fk(<)p Fs(predicate)p Fk(>)i Fs(is)e(true)100 -443 y Fn(k)g Ft(\()p Fk(<)p Ft(pat)242 447 y Fr(1)268 -443 y Fk(>)20 b Ft(...)378 427 y Fr(6)433 443 y Fk(<)p -Ft(pat)523 447 y Fg(n)554 443 y Fk(>)p Ft(\))57 b Fs(a)13 -b(list)h(of)f Fk(n)g Fs(elemen)o(ts)100 489 y Fn(k)g -Fk(<)p Fs(pat)p Fk(>)g Ft(...)p 260 496 59 2 v 332 473 -a Fr(7)661 489 y Fs(a)g(\(p)q(ossibly)j(empt)o(y\))d(rep)q(etition)i -(of)e Fk(<)p Fs(pat)p Fk(>)g Fs(in)h(a)f(list.)100 535 -y Fn(k)g Ft(#\()p Fk(<)p Ft(pat)p Fk(>)k Ft(...)p Fk(<)p -Ft(pat)459 539 y Fg(n)489 535 y Fk(>)p Ft(\))122 b Fs(a)13 -b(v)o(ector)g(of)g(n)g(elemen)o(ts)100 580 y Fn(k)g Ft(?)p -Fk(<)p Fs(iden)o(ti\014er)p Fk(>)303 b Fs(an)o(ything,)15 -b(and)e(binds)i Fk(identif)t(ier)f Fs(as)f(a)g(v)n(ariable)100 -626 y Fn(k)g Ft(?-)489 b Fs(an)o(ything)100 672 y Fn(k)13 -b Ft(??-)469 b Fs(an)o(y)14 b(\(p)q(ossibly)h(empt)o(y\))f(rep)q -(etition)h(of)d(an)o(ything)j(in)f(a)f(list)100 717 y -Fn(k)g Ft(???-)449 b Fs(an)o(y)14 b(end)f(of)g(list)735 -805 y FD(T)m(able)g(3:)18 b(P)o(attern)d(Syn)o(tax)p -77 855 13 2 v 90 855 1733 2 v 1825 855 13 2 v 75 982 -a FC(Explanations)e(through)h(examples)137 1069 y Fm(\017)21 -b Fu(?-)13 b FD(matc)o(hes)h(an)o(y)f(s-expr)137 1157 -y Fm(\017)21 b Fu(a)13 b FD(matc)o(hes)h(the)g(atom)e -Fu('a)p FD(.)137 1245 y Fm(\017)21 b Fu(?a)13 b FD(matc)o(hes)h(an)o(y) -f(expression,)i(and)e(binds)h(the)h(v)n(ariable)e Fu(a)g -FD(to)h(this)g(expression.)137 1333 y Fm(\017)21 b Fu(\(?)43 -b(integer?\))17 b FD(matc)o(hes)c(an)o(y)g(in)o(teger)137 -1421 y Fm(\017)21 b Fu(\(a)g(\(a)h(b\)\))13 b FD(matc)o(hes)g(the)i -(only)e(list)g Fu('\(a)21 b(\(a)h(b\)\))p FD(.)137 1509 -y Fm(\017)f Fu(???-)14 b FD(can)i(only)f(app)q(ear)h(at)f(the)h(end)g -(of)f(a)g(list,)g(and)h(alw)o(a)o(ys)e(succeeds.)26 b(F)m(or)15 -b(instance,)h Fu(\(a)21 b(???-\))15 b FD(is)179 1558 -y(equiv)n(alen)o(t)e(to)h Fu(\(a)21 b(.)43 b(?-\))p FD(.)137 -1646 y Fm(\017)21 b FD(when)c(o)q(ccurring)h(in)e(a)g(list,)h -Fu(??-)f FD(matc)o(hes)g(an)o(y)h(sequence)i(of)d(an)o(ything:)23 -b Fu(\(a)e(??-)g(b\))c FD(matc)o(hes)f(an)o(y)179 1696 -y(list)d(whose)i Fu(car)e FD(is)h Fu(a)f FD(and)h(last)g -Fu(car)f FD(is)h Fu(b)p FD(.)137 1784 y Fm(\017)21 b -Fu(\(a)g(...\))13 b FD(matc)o(hes)h(an)o(y)f(list)h(of)f -Fu(a)p FD('s,)g(p)q(ossibly)g(empt)o(y)m(.)137 1872 y -Fm(\017)21 b Fu(\(?x)g(?x\))13 b FD(matc)o(hes)h(an)o(y)f(list)h(of)f -(length)h(2)f(whose)i Fu(car)e FD(is)h FB(e)n(q)g FD(to)f(its)h -Fu(cadr)137 1960 y Fm(\017)21 b Fu(\(\(and)g(\(not)g(a\))g(?x\))g(?x\)) -13 b FD(matc)o(hes)g(an)o(y)f(list)h(of)g(length)g(2)g(whose)h -Fu(car)f FD(is)g(not)g FB(e)n(q)h FD(to)f Fu('a)g FD(but)g(is)g -FB(e)n(q)h FD(to)179 2010 y(its)g Fu(cadr)137 2098 y -Fm(\017)21 b Fu(#\(?-)g(?-)g(???-\))13 b FD(matc)o(hes)g(an)o(y)h(v)o -(ector)g(whose)h(length)f(is)g(at)f(least)h(2.)75 2184 -y Fl(Note:)31 b Ft(??-)11 b Fs(and)h Ft(...)f Fs(patterns)h(can)h(not)f -(app)q(ear)h(inside)g(a)f(v)o(ector,)g(where)g(y)o(ou)h(should)g(use)f -(???-:)17 b(F)m(or)11 b(example,)j Ft(#\(a)75 2234 y(??-)k(b\))c -Fs(or)g Ft(#\(a...\))19 b Fs(are)14 b(in)o(v)n(alid)j(patterns,)e -(whereas)g Ft(#\(a)k(???-\))12 b Fs(is)j(v)n(alid)h(and)f(matc)o(hes)g -(an)o(y)g(v)o(ector)f(whose)h(\014rst)75 2284 y(elemen)o(t)f(is)g(the)f -(atom)g Ft(a)p Fs(.)75 2407 y FG(6.22)56 b(Pro)r(cesses)75 -2486 y Fz(STk)18 b FD(pro)o(vides)f(access)i(to)e(Unix)g(pro)q(cesses)j -(as)d(\014rst)h(class)g(ob)r(jects.)29 b(Basically)m(,)17 -b(a)f(pro)q(cess)k(con)o(tains)d(four)75 2535 y(informations:)h(the)e -(standard)g(Unix)f(pro)q(cess)i(iden)o(ti\014cation)d(\(ak)n(a)h(PID\)) -g(and)g(the)h(three)h(standard)e(\014les)h(of)75 2585 -y(the)e(pro)q(cess.)75 2694 y Fu(\(run-process)19 b FB(c)n(ommand)k -Fx(p)573 2700 y Fy(1)613 2694 y Fx(p)634 2700 y Fy(2)675 -2694 y Fx(p)696 2700 y Fy(3)736 2694 y Fx(:)7 b(:)g(:)e -Fu(\))846 b FD(pro)q(cedure)75 2769 y Fu(run-process)13 -b FD(creates)k(a)e(new)h(pro)q(cess)h(and)f(run)f(the)h(executable)h -(sp)q(eci\014ed)g(in)e FB(c)n(ommand)5 b FD(.)22 b(The)16 -b FB(p)i FD(corre-)75 2819 y(sp)q(ond)c(to)g(the)h(command)c(line)i -(argumen)o(ts.)k(The)e(follo)o(wing)c(v)n(alues)j(of)f -FB(p)j FD(ha)o(v)o(e)e(a)g(sp)q(ecial)g(meaning:)p eop -%%Page: 43 43 -43 42 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(43)p 75 64 1763 2 v 137 179 a Fm(\017)21 b Fu(:input)10 -b FD(p)q(ermits)h(to)h(redirect)h(the)f(standard)g(input)f(\014le)h(of) -f(the)h(pro)q(cess.)19 b(Redirection)12 b(can)f(come)g(from)179 -229 y(a)g(\014le)h(or)g(from)f(a)g(pip)q(e.)18 b(T)m(o)11 -b(redirect)j(the)e(standard)h(input)e(from)g(a)g(\014le,)h(the)h(name)e -(of)g(this)h(\014le)g(m)o(ust)f(b)q(e)179 278 y(sp)q(eci\014ed)16 -b(after)g Fu(:input)p FD(.)k(Use)15 b(the)h(sp)q(ecial)f(k)o(eyw)o(ord) -g Fu(:pipe)f FD(to)h(redirect)h(the)g(standard)f(input)g(from)179 -328 y(a)e(pip)q(e.)137 414 y Fm(\017)21 b Fu(:output)13 -b FD(p)q(ermits)i(to)g(redirect)i(the)e(standard)h(output)f(\014le)g -(of)g(the)h(pro)q(cess.)23 b(Redirection)16 b(can)f(go)g(to)179 -464 y(a)g(\014le)g(or)h(to)f(a)g(pip)q(e.)22 b(T)m(o)15 -b(redirect)i(the)f(standard)g(output)f(to)h(a)f(\014le,)g(the)h(name)e -(of)h(this)g(\014le)h(m)o(ust)e(b)q(e)179 514 y(sp)q(eci\014ed)i(after) -g Fu(:output)p FD(.)j(Use)d(the)g(sp)q(ecial)f(k)o(eyw)o(ord)g -Fu(:pipe)f FD(to)h(redirect)h(the)g(standard)f(output)h(to)179 -564 y(a)d(pip)q(e.)137 650 y Fm(\017)21 b Fu(:error)11 -b FD(p)q(ermits)g(to)i(redirect)g(the)g(standard)g(error)g(\014le)f(of) -g(the)h(pro)q(cess.)19 b(Redirection)12 b(can)h(go)e(to)i(a)e(\014le) -179 700 y(or)j(to)f(a)h(pip)q(e.)19 b(T)m(o)13 b(redirect)i(the)g -(standard)f(error)h(to)f(a)f(\014le,)h(the)g(name)f(of)h(this)g(\014le) -f(m)o(ust)g(b)q(e)i(sp)q(eci\014ed)179 749 y(after)f -Fu(:error)p FD(.)j(Use)d(the)h(sp)q(ecial)f(k)o(eyw)o(ord)g -Fu(:pipe)f FD(to)g(redirect)j(the)e(standard)h(error)g(to)e(a)h(pip)q -(e.)137 835 y Fm(\017)21 b Fu(:wait)13 b FD(m)o(ust)g(b)q(e)i(follo)o -(w)o(ed)e(b)o(y)h(a)g(b)q(o)q(olean)g(v)n(alue.)k(This)d(v)n(alue)e(sp) -q(eci\014es)j(if)e(the)h(pro)q(cess)h(m)o(ust)d(b)q(e)i(run)179 -885 y(async)o(hronously)f(or)g(not.)k(By)c(default,)f(the)h(pro)q(cess) -i(is)e(run)g(async)o(hronously)g(\(i.e.)k Fu(:wait)12 -b FD(is)i Fu(#f)p FD(\).)137 971 y Fm(\017)21 b Fu(:host)c -FD(m)o(ust)g(b)q(e)i(follo)o(w)o(ed)e(b)o(y)h(a)g(string.)31 -b(This)18 b(string)g(represen)o(ts)j(the)e(name)e(of)h(the)h(mac)o -(hine)e(on)179 1021 y(whic)o(h)e(the)i(command)c(m)o(ust)i(b)q(e)h -(executed.)26 b(This)15 b(option)g(uses)i(the)g(external)f(command)d -Fu(rsh)p FD(.)23 b(The)179 1071 y(shell)12 b(v)n(ariable)f -Fu(PATH)h FD(m)o(ust)f(b)q(e)i(correctly)h(set)f(for)f(accessing)i(it)e -(without)g(sp)q(ecifying)g(its)h(ab)q(olute)f(path.)75 -1152 y(The)f(follo)o(wing)d(example)h(launc)o(hes)i(a)f(pro)q(cess)i -(whic)o(h)e(execute)j(the)e(Unix)f(command)d Fu(ls)j -FD(with)g(the)h(argumen)o(ts)75 1198 y Fu(-l)i FD(and)h -Fu(/bin)p FD(.)j(The)e(lines)e(prin)o(ted)i(b)o(y)e(this)h(command)d -(are)k(stored)g(in)e(the)h(\014le)g Fu(/tmp/X)153 1280 -y Ft(\(run-proces)o(s)i("ls")j("-l")f("/bin")f(:output)g("/tmp/X")f -(:wait)i(#f\))75 1471 y Fu(\(process?)i FB(pr)n(o)n(c)n(ess)s -Fu(\))1215 b FD(pro)q(cedure)75 1545 y(Returns)15 b Fu(#t)e -FD(if)g FB(pr)n(o)n(c)n(ess)k FD(is)d(a)g(pro)q(cess,)h(otherwise)g -(returns)g Fu(#f)p FD(.)75 1656 y Fu(\(process-alive?)k -FB(pr)n(o)n(c)n(ess)s Fu(\))1084 b FD(pro)q(cedure)75 -1730 y(Returns)15 b Fu(#t)e FD(if)g FB(pr)n(o)n(c)n(ess)k -FD(if)c(the)i(pro)q(cess)g(is)f(curren)o(tly)h(running,)e(otherwise)i -(returns)g Fu(#f)p FD(.)75 1841 y Fu(\(process-pid)k -FB(pr)n(o)n(c)n(ess)s Fu(\))1150 b FD(pro)q(cedure)75 -1915 y(Returns)15 b(an)e(in)o(teger)i(v)n(alue)e(whic)o(h)h(represen)o -(ts)i(the)f(Unix)e(iden)o(ti\014cation)g(\(PID\))i(of)e -FB(pr)n(o)n(c)n(ess)s FD(.)75 2026 y Fu(\(process-input)19 -b FB(pr)n(o)n(c)n(ess)s Fu(\))1106 b FD(pro)q(cedure)75 -2076 y Fu(\(process-output)19 b FB(pr)n(o)n(c)n(ess)s -Fu(\))1084 b FD(pro)q(cedure)75 2126 y Fu(\(process-error)19 -b FB(pr)n(o)n(c)n(ess)s Fu(\))1106 b FD(pro)q(cedure)75 -2200 y(Returns)13 b(the)f(\014le)g(p)q(ort)h(asso)q(ciated)f(to)g(the)h -(standard)f(input,)g(output)g(or)g(error)h(of)e FB(pr)n(o)n(c)n(ess)s -FD(,)h(if)f(it)h(is)f(redirected)75 2250 y(in)k(\(or)h(to\))f(a)g(pip)q -(e;)h(otherwise)g(returns)h Fu(#f)p FD(.)23 b(Note)16 -b(that)f(the)h(returned)h(p)q(ort)f(is)f(op)q(ened)i(for)e(reading)g -(when)75 2299 y(calling)c Fu(process-output)f FD(or)i -Fu(process-error)p FD(;)e(it)i(is)h(op)q(ened)g(for)g(writing)e(when)j -(calling)d Fu(process-input)p FD(.)75 2460 y Fu(\(process-wait)19 -b FB(pr)n(o)n(c)n(ess)s Fu(\))1128 b FD(pro)q(cedure)75 -2534 y Fu(Process-wait)9 b FD(stops)k(the)g(curren)o(t)g(pro)q(cess)h -(un)o(til)d FB(pr)n(o)n(c)n(ess)k FD(completion.)h Fu(Process-wait)9 -b FD(returns)k Fu(#f)f FD(when)75 2584 y FB(pr)n(o)n(c)n(ess)17 -b FD(is)d(already)f(terminated;)g(it)h(returns)h Fu(#t)e -FD(otherwise.)75 2695 y Fu(\(process-exit-sta)o(tus)19 -b FB(pr)n(o)n(c)n(ess)s Fu(\))975 b FD(pro)q(cedure)75 -2769 y Fu(Process-exit-stat)o(us)9 b FD(returns)14 b(the)f(exit)f -(status)h(of)e FB(pr)n(o)n(c)n(ess)16 b FD(if)11 b(it)h(has)g -(\014nished)h(its)f(execution;)h(returns)h Fu(#f)75 2819 -y FD(otherwise.)p eop -%%Page: 44 44 -44 43 bop 75 47 a FC(44)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(\(process-send-sig)o(nal)19 -b FB(pr)n(o)n(c)n(ess)i(n)s Fu(\))931 b FD(pro)q(cedure)75 -252 y(Send)18 b(the)g(signal)e(whose)i(in)o(teger)g(v)n(alue)f(is)g -FB(n)k FD(to)c FB(pr)n(o)n(c)n(ess)s FD(.)29 b(V)m(alue)17 -b(of)g FB(n)j FD(is)e(system)f(dep)q(endan)o(t.)30 b(Use)18 -b(the)75 302 y(de\014ned)c(signal)f(constan)o(ts)h(to)f(mak)o(e)f(y)o -(our)h(program)f(indp)q(endan)o(t)i(of)e(the)i(running)f(system)h -(\(see)g(6.18\).)j(The)75 352 y(result)e(of)e FB(pr)n(o)n(c)n -(ess-send-signal)18 b FD(is)c(unde\014ned.)75 455 y Fu(\(process-kill) -19 b FB(pr)n(o)n(c)n(ess)s Fu(\))1128 b FD(pro)q(cedure)75 -525 y Fu(Process-kill)11 b FD(brutally)i(kills)f FB(pr)n(o)n(c)n(ess)s -FD(.)18 b(The)c(result)h(of)e Fu(process-kill)e FD(is)i(unde\014ned.)20 -b(This)13 b(pro)q(cedure)j(is)75 570 y(equiv)n(alen)o(t)d(to)153 -648 y Ft(\(process-se)o(nd)o(-si)o(gna)o(l)j(process)h(|SIGTERM|\))75 -829 y Fu(\(process-stop)i FB(pr)n(o)n(c)n(ess)s Fu(\))1128 -b FD(pro)q(cedure)75 879 y Fu(\(process-continue)18 b -FB(pr)n(o)n(c)n(ess)s Fu(\))1041 b FD(pro)q(cedure)75 -948 y(Those)13 b(pro)q(cedures)j(are)d(only)f(a)o(v)n(ailable)f(on)i -(systems)g(whic)o(h)f(supp)q(ort)i(job)f(con)o(trol.)k -FB(Pr)n(o)n(c)n(ess-stop)e FD(stops)f(the)75 993 y(execution)h(of)e -FB(pr)n(o)n(c)n(ess)k FD(and)d FB(pr)n(o)n(c)n(ess-c)n(ontinue)j -FD(resumes)d(its)g(execution.)19 b(They)14 b(are)g(equiv)n(alen)o(t)g -(to)153 1071 y Ft(\(process-se)o(nd)o(-si)o(gna)o(l)i(process)h -(|SIGSTOP|\))153 1117 y(\(process-se)o(nd)o(-si)o(gna)o(l)f(process)h -(|SIGCONT|\))75 1298 y Fu(\(process-list)m(\))1279 b -FD(pro)q(cedure)75 1371 y Fu(process-list)11 b FD(returns)16 -b(the)e(list)g(of)f(pro)q(cesses)k(whic)o(h)c(are)i(curren)o(tly)f -(running)g(\(i.e.)k(aliv)o(e\).)75 1486 y FG(6.23)56 -b(So)r(c)n(k)n(ets)75 1562 y Fz(STk)20 b FD(de\014nes)i(so)q(c)o(k)o -(ets,)g(on)e(systems)g(whic)o(h)g(supp)q(ort)h(them,)g(as)f(\014rst)h -(class)f(ob)r(jects.)38 b(So)q(c)o(k)o(ets)21 b(p)q(ermits)75 -1612 y(pro)q(cesses)d(to)d(comm)o(unicate)e(ev)o(en)j(if)f(they)g(are)h -(on)f(di\013eren)o(t)h(mac)o(hines.)22 b(So)q(c)o(k)o(ets)16 -b(are)g(useful)f(for)g(creating)75 1662 y(clien)o(t-serv)o(er)g -(applications.)75 1767 y Fu(\(make-client-sock)o(et)k -FB(hostname)j(p)n(ort-numb)n(er)t Fu(\))710 b FD(pro)q(cedure)75 -1840 y Fu(make-client-socke)o(t)16 b FD(returns)k(a)e(new)h(so)q(c)o(k) -o(et)h(ob)r(ject.)33 b(This)19 b(so)q(c)o(k)o(et)g(establishes)h(a)e -(link)g(b)q(et)o(w)o(een)i(the)75 1890 y(running)14 b(application)e -(listening)h(on)h(p)q(ort)g FB(p)n(ort-numb)n(er)k FD(of)13 -b FB(hostname)t FD(.)75 1993 y Fu(\(socket?)20 b FB(so)n(cket)t -Fu(\))1255 b FD(pro)q(cedure)75 2067 y(Returns)15 b Fu(#t)e -FD(if)g FB(so)n(cket)18 b FD(is)c(a)f(so)q(c)o(k)o(et,)i(otherwise)g -(returns)g Fu(#f)p FD(.)75 2170 y Fu(\(socket-host-name)j -FB(so)n(cket)t Fu(\))1059 b FD(pro)q(cedure)75 2244 y(Returns)18 -b(a)e(string)h(whic)o(h)g(con)o(tains)f(the)i(name)d(of)h(the)i(distan) -o(t)e(host)h(attac)o(hed)h(to)e FB(so)n(cket)5 b FD(.)26 -b(If)17 b FB(so)n(cket)j FD(has)75 2293 y(b)q(een)f(created)g(with)e -Fu(make-client-sock)o(et)d FD(this)k(pro)q(cedure)h(returns)g(the)f -(o\016cial)e(name)h(of)g(the)h(distan)o(t)75 2343 y(mac)o(hine)12 -b(used)i(for)f(connection.)18 b(If)13 b FB(so)n(cket)k -FD(has)d(b)q(een)g(created)h(with)d Fu(make-server-socket)p -FD(,)e(this)j(function)75 2393 y(returns)h(the)f(o\016cial)e(name)g(of) -h(the)h(clien)o(t)g(connected)h(to)e(the)h(so)q(c)o(k)o(et.)19 -b(If)12 b(no)g(clien)o(t)g(has)h(used)g(y)o(et)g(the)g(so)q(c)o(k)o -(et,)75 2443 y(this)h(function)g(returns)h Fu(#f)p FD(.)75 -2546 y Fu(\(socket-host-addr)o(ess)k FB(so)n(cket)t Fu(\))993 -b FD(pro)q(cedure)75 2620 y(Returns)16 b(a)f(string)h(whic)o(h)f(con)o -(tains)h(the)g(IP)f(n)o(um)o(b)q(er)g(of)g(the)h(distan)o(t)f(host)h -(attac)o(hed)g(to)g FB(so)n(cket)t FD(.)22 b(If)15 b -FB(so)n(cket)75 2669 y FD(has)f(b)q(een)h(created)h(with)e -Fu(make-client-socke)o(t)d FD(this)j(pro)q(cedure)i(returns)g(the)f(IP) -f(n)o(um)o(b)q(er)f(of)h(the)h(distan)o(t)75 2719 y(mac)o(hine)d(used)i -(for)f(connection.)18 b(If)13 b FB(so)n(cket)k FD(has)d(b)q(een)g -(created)h(with)d Fu(make-server-socket)p FD(,)e(this)j(function)75 -2769 y(returns)i(the)f(address)g(of)f(the)g(clien)o(t)h(connected)h(to) -e(the)g(so)q(c)o(k)o(et.)19 b(If)13 b(no)g(clien)o(t)g(has)g(used)h(y)o -(et)g(the)g(so)q(c)o(k)o(et,)f(this)75 2819 y(function)h(returns)h -Fu(#f)p FD(.)p eop -%%Page: 45 45 -45 44 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(45)p 75 64 1763 2 v 75 179 a Fu(\(socket-local-add)o(ress)18 -b FB(so)n(cket)t Fu(\))972 b FD(pro)q(cedure)75 252 y(Returns)15 -b(a)e(string)h(whic)o(h)g(con)o(tains)g(the)g(IP)g(n)o(um)o(b)q(er)g -(of)f(the)h(lo)q(cal)f(host)i(attac)o(hed)f(to)g FB(so)n(cket)t -FD(.)75 355 y Fu(\(socket-port-numb)o(er)19 b FB(so)n(cket)t -Fu(\))1015 b FD(pro)q(cedure)75 429 y(Returns)15 b(the)f(in)o(teger)h -(n)o(um)o(b)q(er)e(of)g(the)i(p)q(ort)f(used)g(for)g -FB(so)n(cket)t FD(.)75 531 y Fu(\(socket-input)19 b FB(so)n(cket)t -Fu(\))1146 b FD(pro)q(cedure)75 581 y Fu(\(socket-output)19 -b FB(so)n(cket)t Fu(\))1124 b FD(pro)q(cedure)75 655 -y(Returns)14 b(the)f(\014le)g(p)q(ort)g(asso)q(ciated)g(for)f(reading)h -(or)g(writing)e(with)i(the)g(program)e(connected)k(with)d -FB(so)n(cket)t FD(.)18 b(If)75 705 y(no)c(connection)g(has)g(already)g -(b)q(een)h(established,)f(these)h(functions)f(return)h -Fu(#f)p FD(.)75 750 y(The)g(follo)o(wing)c(example)i(sho)o(ws)i(ho)o(w) -f(to)g(mak)o(e)f(a)h(clien)o(t)g(so)q(c)o(k)o(et.)20 -b(Here)c(w)o(e)f(create)g(a)f(so)q(c)o(k)o(et)i(on)e(p)q(ort)g(13)g(of) -75 796 y(the)g(mac)o(hine)f(\\)p Fu(kaolin.unice.fr)p -FD(")680 781 y Fy(8)696 796 y FD(:)153 873 y Ft(\(let)19 -b(\(\(s)f(\(make-clie)o(nt)o(-so)o(ck)o(et)e("kaolin.un)o(ice)o(.f)o -(r")g(13\)\)\))193 919 y(\(format)h(#t)38 b("Time)18 -b(is:)g(~A\\n")g(\(read-lin)o(e)f(\(socket-i)o(np)o(ut)f(s\)\)\))193 -964 y(\(socket-s)o(hu)o(tdo)o(wn)36 b(s\)\))75 1145 y -Fu(\(make-server-sock)o(et)m(\))1148 b FD(pro)q(cedure)75 -1194 y Fu(\(make-server-sock)o(et)19 b FB(p)n(ort-numb)n(er)t -Fu(\))902 b FD(pro)q(cedure)75 1268 y Fu(make-server-socke)o(t)13 -b FD(returns)18 b(a)e(new)h(so)q(c)o(k)o(et)g(ob)r(ject.)25 -b(If)16 b FB(p)n(ort-numb)n(er)k FD(is)d(sp)q(eci\014ed,)g(the)g(so)q -(c)o(k)o(et)g(is)f(lis-)75 1318 y(tening)e(on)f(the)i(sp)q(eci\014ed)g -(p)q(ort;)f(otherwise,)h(the)f(comm)o(unication)c(p)q(ort)15 -b(is)e(c)o(hosen)i(b)o(y)f(the)g(system.)75 1421 y Fu -(\(socket-accept-co)o(nnect)o(ion)19 b FB(so)n(cket)t -Fu(\))884 b FD(pro)q(cedure)75 1494 y Fu(socket-accept-con)o(necti)o -(on)16 b FD(w)o(aits)j(for)g(a)h(clien)o(t)f(connection)h(on)f(the)h -(giv)o(en)f FB(so)n(cket)t FD(.)35 b(If)19 b(no)g(clien)o(t)h(is)75 -1544 y(already)15 b(w)o(aiting)g(for)g(a)g(connection,)i(this)e(pro)q -(cedure)j(blo)q(c)o(ks)e(its)f(caller;)h(otherwise,)h(the)f(\014rst)h -(connection)75 1594 y(request)c(on)e(the)h(queue)g(of)f(p)q(ending)g -(connections)h(is)g(connected)h(to)e FB(so)n(cket)t FD(.)17 -b(This)11 b(pro)q(cedure)j(m)o(ust)c(b)q(e)i(called)75 -1643 y(on)h(a)f(serv)o(er)j(so)q(c)o(k)o(et)f(created)g(with)f -Fu(make-server-socke)o(t)p FD(.)i(The)e(result)h(of)e -Fu(socket-accept-connec)o(tion)75 1693 y FD(is)i(unde\014ned.)75 -1739 y(The)e(follo)o(wing)d(example)i(is)g(a)h(simple)e(serv)o(er)k -(whic)o(h)d(w)o(aits)h(for)f(a)g(connection)i(on)e(the)i(p)q(ort)f -(1234)1629 1724 y Fy(9)1647 1739 y FD(.)17 b(Once)c(the)75 -1785 y(connection)h(with)e(the)i(distan)o(t)f(program)e(is)i -(established,)g(w)o(e)g(read)h(a)e(line)h(on)f(the)i(input)f(p)q(ort)g -(asso)q(ciated)h(to)75 1830 y(the)g(so)q(c)o(k)o(et)h(and)f(w)o(e)g -(write)g(the)h(length)f(of)f(this)h(line)f(on)h(its)g(output)g(p)q -(ort.)153 1907 y Ft(\(let)19 b(\(\(s)f(\(make-serv)o(er)o(-so)o(ck)o -(et)e(1234\)\)\))193 1953 y(\(socket-a)o(cc)o(ept)o(-co)o(nn)o(ect)o -(io)o(n)h(s\))193 1999 y(\(let)h(\(\(l)g(\(read-line)e(\(socket-i)o -(npu)o(t)h(s\)\)\)\))232 2044 y(\(format)g(\(socket-o)o(utp)o(ut)f(s\)) -j("Length)e(is:)h(~A\\n")g(\(string-l)o(eng)o(th)e(l\)\))232 -2090 y(\(flush)h(\(socket-ou)o(tpu)o(t)f(s\)\)\))193 -2136 y(\(socket-s)o(hu)o(tdo)o(wn)g(s\)\))75 2316 y Fu -(\(socket-shutdown)i FB(so)n(cket)t Fu(\))1081 b FD(pro)q(cedure)75 -2366 y Fu(\(socket-shutdown)18 b FB(so)n(cket)k(close)s -Fu(\))973 b FD(pro)q(cedure)75 2439 y Fu(Socket-shutdown)10 -b FD(sh)o(utdo)o(wns)k(the)f(connection)h(asso)q(ciated)g(to)f -FB(so)n(cket)t FD(.)18 b FB(Close)e FD(is)d(a)g(b)q(o)q(olean;)f(it)h -(indicates)75 2489 y(if)h(the)h(so)q(c)o(k)o(et)g(m)o(ust)f(b)q(e)h -(closed)g(or)f(not,)g(when)h(the)g(connection)h(is)e(destro)o(y)o(ed.) -21 b(Closing)13 b(the)i(so)q(c)o(k)o(et)h(forbids)75 -2539 y(further)e(connections)h(on)e(the)h(same)f(p)q(ort)h(with)f(the)h -Fu(socket-accept-conn)o(ectio)o(n)d FD(pro)q(cedure.)19 -b(Omitting)75 2589 y(a)14 b(v)n(alue)f(for)g FB(close)k -FD(implies)12 b(the)j(closing)e(of)g(so)q(c)o(k)o(et.)19 -b(The)c(result)f(of)f Fu(socket-shutdown)e FD(is)j(unde\014ned.)p -75 2622 705 2 v 121 2649 a Fr(8)139 2661 y Fq(P)o(ort)e(13)g(is)h -(generally)d(used)i(for)g(testing:)17 b(making)10 b(a)j(connection)d -(to)i(it)h(p)q(ermits)e(to)h(kno)o(w)h(the)f(distan)o(t)f(system's)g -(idea)h(of)75 2700 y(the)f(time)f(of)h(da)o(y)m(.)121 -2728 y Fr(9)139 2740 y Fq(Under)g(Unix,)i(y)o(ou)e(can)h(simply)f -(connect)f(to)i(listening)f(so)q(c)o(k)o(et)g(with)h(the)g -Fo(telnet)f Fq(command.)k(With)d(the)g(giv)o(en)f(example,)75 -2779 y(this)g(can)f(b)q(e)i(ac)o(hiev)o(ed)d(b)o(y)i(t)o(yping)e(the)i -(follo)o(wing)f(command)f(in)i(a)g(windo)o(w)h(shell:)75 -2819 y Fo($)17 b(telnet)f(localhost)e(1234)p eop -%%Page: 46 46 -46 45 bop 75 47 a FC(46)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a FD(The)f(follo)o(wing)d(example)h(sho)o(ws)i(a) -f(simple)f(serv)o(er:)19 b(when)13 b(there)g(is)g(a)f(new)h(connection) -g(on)f(the)h(p)q(ort)g(n)o(um)o(b)q(er)75 224 y(1234,)k(the)h(serv)o -(er)g(displa)o(ys)f(the)h(\014rst)g(line)f(sen)o(t)h(to)f(it)g(b)o(y)g -(the)h(clien)o(t,)f(discards)h(the)g(others)h(and)e(go)f(bac)o(k)75 -270 y(w)o(aiting)c(for)i(further)h(clien)o(t)f(connections.)153 -350 y Ft(\(let)19 b(\(\(s)f(\(make-serv)o(er)o(-so)o(ck)o(et)e -(1234\)\)\))193 395 y(\(let)i(loop)g(\(\))232 441 y(\(socket-a)o(cce)o -(pt-)o(co)o(nne)o(ct)o(ion)e(s\))232 487 y(\(format)h(#t)i("I've)e -(read:)h(~A\\n")g(\(read-lin)o(e)e(\(socket-inp)o(ut)g(s\)\)\))232 -532 y(\(socket-s)o(hut)o(dow)o(n)g(s)k(#f\))232 578 y(\(loop\)\)\))75 -764 y Fu(\(socket-down?)f FB(so)n(cket)t Fu(\))1146 b -FD(pro)q(cedure)75 837 y(Returns)14 b Fu(#t)f FD(if)g -FB(so)n(cket)k FD(has)c(b)q(een)i(previously)e(closed)h(with)f -Fu(socket-shutdown)p FD(.)i(It)e(returns)i Fu(#f)e FD(otherwise.)75 -944 y Fu(\(socket-dup)20 b FB(so)n(cket)t Fu(\))1189 -b FD(pro)q(cedure)75 1014 y(Returns)13 b(a)e(cop)o(y)h(of)f -FB(so)n(cket)t FD(.)18 b(The)12 b(original)e(and)i(the)g(cop)o(y)g(so)q -(c)o(k)o(et)g(can)h(b)q(e)f(used)h(in)o(terc)o(hangeably)m(.)j(Ho)o(w)o -(ev)o(er,)75 1059 y(if)g(a)h(new)h(connection)f(is)g(accepted)i(on)e -(one)g(so)q(c)o(k)o(et,)i(the)e(c)o(haracters)i(exc)o(hanged)f(on)f -(this)g(so)q(c)o(k)o(et)h(are)g(not)75 1105 y(visible)f(on)h(the)g -(other)g(so)q(c)o(k)o(et.)31 b(Duplicating)16 b(a)i(so)q(c)o(k)o(et)g -(is)g(useful)g(when)g(a)g(serv)o(er)h(m)o(ust)e(accept)i(m)o(ultiple)75 -1151 y(sim)o(ultaneous)c(connections.)28 b(The)18 b(follo)o(wing)c -(example)i(creates)i(a)f(serv)o(er)h(listening)f(on)f(p)q(ort)i(1234.) -26 b(This)75 1196 y(serv)o(er)15 b(is)f(duplicated)g(and,)f(once)i(t)o -(w)o(o)e(clien)o(ts)h(are)h(presen)o(t,)g(a)e(message)h(is)g(sen)o(t)g -(on)g(b)q(oth)g(connections.)153 1276 y Ft(\(define)j(s1)i(\(make-serv) -o(er-)o(so)o(cke)o(t)d(1234\)\))153 1321 y(\(define)h(s2)i(\(socket-du) -o(p)e(s1\)\))153 1367 y(\(socket-acc)o(ep)o(t-c)o(onn)o(ec)o(tio)o(n)f -(s1\))153 1413 y(\(socket-acc)o(ep)o(t-c)o(onn)o(ec)o(tio)o(n)g(s2\)) -153 1458 y(;;)j(blocks)f(until)f(two)i(clients)e(are)h(present)153 -1504 y(\(display)f("Hello,\\n")f(\(socket-o)o(ut)o(put)g(s1\)\))153 -1550 y(\(display)h("world\\n")36 b(\(socket-o)o(ut)o(put)16 -b(s2\)\))153 1595 y(\(flush)i(\(socket-o)o(utp)o(ut)e(s1\)\))153 -1641 y(\(flush)i(\(socket-o)o(utp)o(ut)e(s2\)\))75 1827 -y Fu(\(when-socket-read)o(y)j FB(so)n(cket)j(hand)r(ler)t -Fu(\))879 b FD(pro)q(cedure)75 1877 y Fu(\(when-socket-read)o(y)19 -b FB(so)n(cket)t Fu(\))1037 b FD(pro)q(cedure)75 1950 -y(De\014nes)20 b(a)e(handler)h(for)f FB(so)n(cket)t FD(.)33 -b(The)19 b(handler)f(is)h(a)f(th)o(unk)h(whic)o(h)g(is)f(executed)j -(when)e(a)f(connection)i(is)75 2000 y(a)o(v)n(ailable)12 -b(on)i FB(so)n(cket)5 b FD(.)19 b(If)14 b(the)h(sp)q(ecial)g(v)n(alue)f -Fu(#f)g FD(is)g(pro)o(vided)g(as)h FB(hand)r(ler)5 b -FD(,)14 b(the)h(curren)o(t)h(handler)e(for)g FB(so)n(cket)75 -2050 y FD(is)20 b(deleted.)37 b(If)20 b(a)g(handler)g(is)g(pro)o -(vided,)h(the)f(v)n(alue)g(returned)i(b)o(y)d Fu(when-socket-ready)e -FD(is)j(unde\014ned.)75 2100 y(Otherwise,)15 b(it)e(returns)j(the)e -(handler)g(curren)o(tly)h(asso)q(ciated)g(to)f FB(so)n(cket)t -FD(.)75 2146 y(This)i(pro)q(cedure,)i(in)d(conjunction)h(with)g -Fu(socket-dup)e FD(p)q(ermits)h(to)h(build)f(m)o(ultiple-clien)o(ts)f -(serv)o(ers)k(whic)o(h)75 2191 y(w)o(ork)c(async)o(hronously)m(.)j(Suc) -o(h)e(a)e(serv)o(er)j(is)d(sho)o(wn)h(b)q(elo)o(w.)153 -2271 y Ft(\(define)j(p)j(\(make-ser)o(ve)o(r-s)o(oc)o(ket)c(1234\)\)) -153 2317 y(\(when-socke)o(t-)o(rea)o(dy)g(p)507 2362 -y(\(let)i(\(\(count)e(0\)\))546 2408 y(\(lambda)h(\(\))585 -2454 y(\(set!)h(count)f(\(+)i(count)f(1\)\))585 2499 -y(\(register)o(-co)o(nne)o(ct)o(ion)e(\(socket-d)o(up)g(p\))j -(count\)\)\)\))153 2591 y(\(define)e(register-co)o(nn)o(ect)o(io)o(n) -193 2636 y(\(let)h(\(\(sockets)e('\(\)\)\))232 2682 y(\(lambda)h(\(s)i -(cnt\))271 2728 y(;;)g(Accept)e(connection)271 2773 y(\(socket-ac)o -(cep)o(t-)o(con)o(ne)o(cti)o(on)f(s\))271 2819 y(;;)j(Save)f(socket)f -(somewhere)f(to)j(avoid)f(GC)h(problems)p eop -%%Page: 47 47 -47 46 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(47)p 75 64 1763 2 v 271 179 a Ft(\(set!)18 b(sockets)f(\(cons)g(s)j -(sockets\)\))271 224 y(;;)f(Create)e(a)j(handler)c(for)j(reading)e -(inputs)g(from)h(this)g(new)h(connectio)o(n)271 270 y(\(let)f(\(\(in)38 -b(\(socket-i)o(npu)o(t)16 b(s\)\))389 316 y(\(out)i(\(socket-o)o(utp)o -(ut)e(s\)\)\))310 361 y(\(when-port-)o(re)o(ada)o(bl)o(e)h(in)408 -407 y(\(lambda)g(\(\))448 453 y(\(let)h(\(\(l)g(\(read-line)e(in\)\)\)) -487 498 y(\(if)i(\(eof-objec)o(t?)e(l\))565 544 y(;;)j(delete)e -(current)g(handler)565 590 y(\(when-port)o(-re)o(ada)o(bl)o(e)g(in)h -(#f\))565 635 y(;;)h(Just)f(write)g(the)g(line)g(read)h(on)f(the)h -(socket)565 681 y(\(begin)605 727 y(\(format)d(out)j("On)f(#~A)h(-->)f -(~A\\n")g(cnt)g(l\))605 772 y(\(flush)f(out\)\)\)\)\)\))o(\)\)\))o(\)) -75 957 y FG(6.24)56 b(F)-5 b(oreign)18 b(F)-5 b(unction)19 -b(In)n(terface)75 1034 y FD(The)c Fz(STk)h FD(F)m(oreign)e(F)m(unction) -h(In)o(terface)h(\(FFI)f(for)g(short\))h(has)f(b)q(een)h(de\014ned)g -(to)f(allo)o(w)e(an)i(easy)h(access)h(to)75 1084 y(functions)d(written) -g(in)f(C)h(without)f(needing)h(to)g(build)e(C-wrapp)q(ers)j(and,)e -(consequen)o(tly)m(,)h(without)f(an)o(y)g(need)75 1133 -y(to)f(write)h(C)f(co)q(de.)18 b(Note)13 b(that)f(the)h(FFI)f(is)g(v)o -(ery)g(mac)o(hine)f(dep)q(enden)o(t)j(and)e(that)g(it)g(w)o(orks)g -(only)g(on)g(a)g(limited)75 1183 y(set)18 b(of)f(arc)o(hitectures)424 -1168 y Fy(10)461 1183 y FD(.)29 b(Moreo)o(v)o(er,)18 -b(since)g(FFI)g(allo)o(ws)e(v)o(ery)h(lo)o(w)g(lev)o(el)g(access,)i(it) -e(is)h(easy)f(to)h(crash)g(the)75 1233 y(in)o(terpreter)e(when)e(using) -g(an)f(external)i(C)f(function.)75 1283 y(The)f(de\014nition)f(of)g(an) -h(external)g(function)f(is)g(done)h(with)g(the)g(syn)o(tax)f -Fu(define-external)p FD(.)j(This)d(form)f(tak)o(es)75 -1333 y(as)18 b(argumen)o(ts)f(a)g(t)o(yp)q(ed)h(list)g(of)f(parameters) -g(and)h(accepts)h(sev)o(eral)f(options)g(to)f(de\014ne)i(the)f(name)f -(of)g(the)75 1383 y(function)h(in)f(the)i(C)e(w)o(orld,)h(the)h -(library)e(whic)o(h)h(de\014nes)h(this)f(function,)f(.)7 -b(.)f(.)37 b(The)18 b(t)o(yp)q(e)h(of)e(the)i(function)75 -1432 y(result)14 b(and)f(the)h(t)o(yp)q(es)g(of)e(its)h(argumen)o(ts)g -(are)g(de\014ned)h(in)f(T)m(able)f(4.)18 b(This)13 b(table)g(lists)g -(the)h(v)n(arious)e(k)o(eyw)o(ords)75 1482 y(reserv)o(ed)k(for)d -(denoting)h(t)o(yp)q(es)h(and)f(their)g(equiv)n(alence)g(b)q(et)o(w)o -(een)h(the)g(C)f(and)f(the)i(Sc)o(heme)e(w)o(orlds.)75 -1586 y Fu(\(define-external)18 b Fm(h)p FD(name)p Fm(i)j(h)p -FD(parameters)p Fm(i)i(h)p FD(options)p Fm(i)p Fu(\))681 -b FD(syn)o(tax)75 1659 y(The)16 b(form)e Fu(define-external)e -FD(binds)k(a)f(new)h(pro)q(cedure)i(to)d Fm(h)p FD(name)p -Fm(i)p FD(.)23 b(The)16 b(arit)o(y)f(of)g(this)g(new)i(pro)q(cedure)75 -1709 y(is)g(de\014ned)h(b)o(y)f(the)h(t)o(yp)q(ed)g(list)f(of)f -(parameters)i(giv)o(en)e(b)o(y)h Fm(h)p FD(parameters)p -Fm(i)q FD(.)28 b(This)17 b(parameters)g(list)g(is)g(a)g(list)75 -1759 y(of)e(couples)h(whose)f(\014rst)h(elemen)o(t)f(is)g(the)h(name)e -(of)h(the)h(parameter,)f(and)g(the)g(second)i(one)e(is)g(is)h(a)e(k)o -(eyw)o(ord)75 1809 y(represen)o(ting)j(its)e(t)o(yp)q(e)h(\(see)g -(table)g(for)e(equiv)n(alence\).)23 b(All)14 b(the)i(t)o(yp)q(es)g -(de\014ned)g(in)f(T)m(able)g(4,)f(except)j Fu(:void)p -FD(,)75 1859 y(are)d(allo)o(w)o(ed)f(for)g(the)i(parameters)f(of)f(a)h -(foreign)f(function.)18 b Fu(Define-external)11 b FD(accepts)k(sev)o -(eral)f(options:)137 1933 y Fm(\017)21 b Fu(:return-type)11 -b FD(is)j(used)h(to)e(de\014ne)i(the)g(t)o(yp)q(e)f(of)f(the)i(v)n -(alue)e(returned)j(b)o(y)d(the)i(foreign)e(function.)18 -b(The)179 1979 y(t)o(yp)q(e)c(returned)i(m)o(ust)d(b)q(e)h(c)o(hosen)h -(in)e(the)i(t)o(yp)q(es)g(sp)q(eci\014ed)g(in)f(the)g(table.)k(F)m(or) -13 b(instance:)336 2069 y Ft(\(define-e)o(xt)o(ern)o(al)j(maximum\(\(a) -g(:int\))i(\(b)g(:int\)\))375 2114 y(:return-t)o(ype)e(:int\))179 -2254 y FD(de\014nes)j(the)f(foreign)g(function)f(maxim)n(um)d(whic)o(h) -j(tak)o(es)i(t)o(w)o(o)e(C)h(in)o(tegers)g(and)g(returns)h(an)f(in)o -(teger)179 2304 y(result.)h(Omitting)11 b(this)j(option)f(default)h(to) -f(a)h(result)g(t)o(yp)q(e)h(equal)e(to)h Fu(:void)f FD(\(i.e.)k(the)e -(returned)g(v)n(alue)179 2354 y(is)f FB(unde\014ne)n(d)t -FD(\).)137 2430 y Fm(\017)21 b Fu(:entry-name)16 b FD(is)i(used)h(to)f -(sp)q(ecify)g(the)h(name)e(of)h(the)g(foreign)g(function)g(in)g(the)g -(C)g(w)o(orld.)31 b(If)17 b(this)179 2476 y(option)c(is)h(omitted,)e -(the)i(en)o(try-name)f(is)h(supp)q(osed)h(to)f(b)q(e)h -Fm(h)p FD(name)p Fm(i)o FD(.)j(F)m(or)13 b(instance:)336 -2566 y Ft(\(define-e)o(xt)o(ern)o(al)j(minimum\(\(a)g(:int\))i(\(b)g -(:int\)\))375 2612 y(:return-t)o(ype)e(:int)375 2657 -y(:entry-na)o(me)36 b("min"\))p 75 2741 705 2 v 106 2768 -a Fr(10)139 2779 y Fq(In)13 b(release)f(3.99,)g(FFI)i(is)f(kno)o(wn)g -(to)g(w)o(ork)h(on)f(the)g(follo)o(wing)f(arc)o(hitectur)o(es)f(:)19 -b(ix86)13 b(\(but)f(not)h(y)o(et)g(MS)h(Windo)o(ws\),)f(Sun)75 -2819 y(Sparc,)d(HP)i(9000,)e(SGI.)p eop -%%Page: 48 48 -48 47 bop 75 47 a FC(48)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 114 139 1685 2 v 113 239 2 100 v 139 174 -a(Name)p 517 239 V 282 w(Corresp)q(onding)f(C)j(t)o(yp)q(e)p -1157 239 V 174 w(Corresp)q(onding)124 b(Sc)o(heme)1183 -224 y(T)o(yp)q(e)p 1798 239 V 114 240 1685 2 v 114 249 -V 113 298 2 50 v 139 283 a Fu(:void)p 517 298 V 294 w(void)p -1157 298 V 552 w FB(None)p 1798 298 V 114 300 1685 2 -v 113 400 2 100 v 139 335 a Fu(:char)p 517 400 V 294 -w(char)p 1157 400 V 552 w FD(Sc)o(heme)17 b(c)o(haracter)h(or)f(Sc)o -(heme)g(in-)1183 385 y(teger)p 1798 400 V 114 401 1685 -2 v 113 451 2 50 v 139 436 a Fu(:short)p 517 451 V 272 -w(short)k(int)p 1157 451 V 443 w FD(Sc)o(heme)14 b(in)o(teger)p -1798 451 V 114 453 1685 2 v 113 503 2 50 v 139 488 a -Fu(:ushort)p 517 503 V 250 w(unsigned)20 b(short)h(int)p -1157 503 V 247 w FD(Sc)o(heme)14 b(in)o(teger)p 1798 -503 V 114 504 1685 2 v 113 554 2 50 v 139 539 a Fu(:int)p -517 554 V 316 w(int)p 1157 554 V 574 w FD(Sc)o(heme)g(in)o(teger)p -1798 554 V 114 556 1685 2 v 113 606 2 50 v 139 591 a -Fu(:uint)p 517 606 V 294 w(unsigned)20 b(integer)p 1157 -606 V 290 w FD(Sc)o(heme)14 b(in)o(teger)p 1798 606 V -114 607 1685 2 v 113 657 2 50 v 139 642 a Fu(:long)p -517 657 V 294 w(long)21 b(integer)p 1157 657 V 377 w -FD(Sc)o(heme)14 b(in)o(teger)p 1798 657 V 114 659 1685 -2 v 113 708 2 50 v 139 694 a Fu(:ulong)p 517 708 V 272 -w(unsigned)20 b(long)h(integer)p 1157 708 V 181 w FD(Sc)o(heme)14 -b(in)o(teger)p 1798 708 V 114 710 1685 2 v 113 760 2 -50 v 139 745 a Fu(:float)p 517 760 V 272 w(float)p 1157 -760 V 530 w FD(Sc)o(heme)g(Real)p 1798 760 V 114 762 -1685 2 v 113 811 2 50 v 139 796 a Fu(:double)p 517 811 -V 250 w(double)p 1157 811 V 508 w FD(Sc)o(heme)g(Real)p -1798 811 V 114 813 1685 2 v 113 913 2 100 v 139 848 a -Fu(:static-ptr)p 517 913 V 162 w FD(p)q(oin)o(ter)g(on)g(a)f(static)h -(area)p 1157 913 V 216 w(Sc)o(heme)45 b(C-p)q(oin)o(ter)f(ob)r(ject)i -(or)1183 898 y(Sc)o(heme)14 b(String)p 1798 913 V 114 -914 1685 2 v 113 1014 2 100 v 139 949 a Fu(:dynamic-ptr)51 -b FB(or)139 999 y Fu(\(:void)20 b(*\))p 517 1014 V 543 -949 a FD(p)q(oin)o(ter)42 b(on)g(a)f(dynamic)f(area)543 -999 y(\()p Fu(malloc)p FD(ated\))p 1157 1014 V 1183 949 -a(Sc)o(heme)45 b(C-p)q(oin)o(ter)f(ob)r(ject)i(or)1183 -999 y(Sc)o(heme)14 b(String)p 1798 1014 V 114 1016 1685 -2 v 113 1115 2 100 v 139 1051 a Fu(:string)161 b FB(or)139 -1100 y Fu(\(:char)20 b(*\))p 517 1115 V 543 1051 a(char)h(*)j -FD(\(p)q(oin)o(ter)g(on)g(a)g(dynamic)543 1100 y(string\))p -1157 1115 V 1183 1051 a(Sc)o(heme)45 b(C-p)q(oin)o(ter)f(ob)r(ject)i -(or)1183 1100 y(Sc)o(heme)14 b(String)p 1798 1115 V 114 -1117 1685 2 v 113 1167 2 50 v 139 1152 a Fu(:boolean)p -517 1167 V 228 w(int)p 1157 1167 V 574 w FD(Sc)o(heme)g(b)q(o)q(olean)p -1798 1167 V 114 1168 1685 2 v 684 1243 a(T)m(able)f(4:)18 -b(FFI)c(prede\014ned)i(t)o(yp)q(es)179 1407 y(de\014nes)f(the)f(Sc)o -(heme)g(function)f Fu(minimum)g FD(whose)h(application)e(executes)17 -b(the)d(C)g(function)f(called)h Fu(min)p FD(.)137 1481 -y Fm(\017)21 b Fu(:library-name)12 b FD(is)i(used)i(to)e(sp)q(ecify)i -(the)f(library)f(whic)o(h)g(con)o(tains)h(the)g(foreign-function.)20 -b(If)14 b(neces-)179 1527 y(sary)m(,)f(the)h(library)g(is)f(loaded)h(b) -q(efore)g(calling)f(the)h(C)g(function.)k(So,)336 1609 -y Ft(\(define-e)o(xt)o(ern)o(al)e(minimum\(\(a)g(:int\))i(\(b)g -(:int\)\))375 1655 y(:return-t)o(ype)36 b(:int)375 1701 -y(:entry-na)o(me)56 b("min")375 1746 y(:library-)o(nam)o(e)17 -b("libminm)o(ax")o(\))179 1879 y FD(de\014nes)e(a)f(function)g(whic)o -(h)g(will)f(execute)j(the)f(function)f Fu(min)g FD(lo)q(cated)g(in)g -(the)h(library)f Fu(libminmax.xx)179 1929 y FD(\(where)h -Fu(xx)e FD(is)h(the)g(su\016x)g(used)g(for)g(shared)h(libraries)e(on)h -(the)g(running)f(system)h(\(generally)g Fu(so)g FD(or)f -Fu(sl)p FD(\).)75 1998 y(Hereafter,)i(there)g(are)f(some)f(commen)o -(ted)g(de\014nitions)h(of)f(external)h(functions:)193 -2067 y Ft(\(define-e)o(xt)o(ern)o(al)i(isatty)h(\(\(fd)h(:int\)\))252 -2112 y(:return-)o(typ)o(e)f(:boolean)o(\))193 2204 y(\(define-e)o(xt)o -(ern)o(al)f(system)h(\(\(cmd)h(\(:char)f(*\)\)\))h Fi(;;)h(or)g -(\(\(cmd)f(:string\)\))252 2249 y Ft(:return-)o(typ)o(e)f(:int\))193 -2341 y(\(define-e)o(xt)o(ern)o(al)f(malloc)h(\(\(size)h(:ulong\)\))252 -2386 y(:return-)o(typ)o(e)f(\(void)g(*\)\))193 2478 y(\(define-e)o(xt)o -(ern)o(al)f(free)i(\()h(\(p)g(\(:void)f(*\))g(\)\))h(\))75 -2596 y FD(All)14 b(these)i(functions)f(are)g(de\014ned)h(in)e(the)h(C)g -(standard)g(library)m(,)e(hence)k(it)d(is)h(not)f(necessary)j(to)e(sp)q -(ecify)g(the)75 2646 y Fu(:library-name)c FD(option.)137 -2719 y Fm(\017)21 b Fu(istty)13 b FD(is)i(declared)h(here)g(as)f(a)f -(function)h(whic)o(h)f(tak)o(es)i(an)e(in)o(teger)i(and)e(returns)j(a)d -(b)q(o)q(olean)g(\(in)h(fact,)179 2769 y(the)g(v)n(alue)f(returned)i(b) -o(y)e(the)h(C)g(function)f Fu(isatty)f FD(is)i(an)f Fu(int)p -FD(,)g(but)g(w)o(e)h(ask)g(here)g(to)g(the)g(FFI)g(system)179 -2819 y(to)f(translate)g(this)g(result)g(as)g(a)g(b)q(o)q(olean)f(v)n -(alue)h(in)f(the)i(Sc)o(heme)e(w)o(orld\).)p eop -%%Page: 49 49 -49 48 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(49)p 75 64 1763 2 v 137 179 a Fm(\017)21 b Fu(system)14 -b FD(is)h(a)g(function)f(whic)o(h)h(tak)o(es)h(a)f(string)g(as)g -(parameter)g(and)g(returns)i(an)e Fu(int)p FD(.)21 b(Note)16 -b(that)f(the)179 229 y(t)o(yp)q(e)e(of)g(the)g(parameter,)g(can)g(b)q -(e)h(sp)q(eci\014ed)g(as)f(a)g Fu(\(:char)21 b(*\))12 -b FD(or)h Fu(:string)p FD(,)e(as)i(indicated)g(in)g(T)m(able)f(4.)137 -323 y Fm(\017)21 b Fu(malloc)11 b FD(is)i(a)g(function)f(whic)o(h)h -(tak)o(es)h(one)f(parameter)f(\(an)h Fu(unsigned)20 b(long)h(int)12 -b FD(and)h(whic)o(h)g(returns)179 373 y(a)f Fu(\(:void)21 -b(*\))12 b FD(\(or)g Fu(:dynamic-ptr)p FD(\).)k(Sp)q(ecifying)c(that)g -(the)h(result)h(is)e(a)g(dynamic)f(p)q(oin)o(ter)i(\(instead)g(of)179 -423 y(a)i(static)h(one\))g(means)f(that)h(w)o(e)g(w)o(an)o(t)f(that)g -(the)i(Garbage)e(Collector)31 b(tak)o(es)16 b(in)o(to)f(accoun)o(t)h -(the)g(area)179 473 y(allo)q(cated)g(b)o(y)g(the)h(C)g(function)f -Fu(malloc)f FD(\(i.e.)26 b(if)16 b(this)g(area)h(b)q(ecomes)g(no)f -(more)g(accessible,)i(the)f(GC)179 523 y(disp)q(oses)e(it)e(with)h(the) -g Fu(free)f FD(function)797 508 y Fy(11)832 523 y FD(.)137 -618 y Fm(\017)21 b Fu(free)14 b FD(is)h(a)f(function)h(whic)o(h)g(tak)o -(es)g(a)g(dynamic)e(p)q(oin)o(ter)i(and)g(deallo)q(cates)h(the)f(area)g -(it)g(p)q(oin)o(ts.)21 b(Since)179 667 y(the)14 b(de\014nition)g(of)f -(this)h(function)g(sp)q(eci\014es)h(no)f(result)h(t)o(yp)q(e,)f(it)f -(is)h(supp)q(osed)h(to)f(b)q(e)g Fu(:void)1644 652 y -Fy(12)1678 667 y FD(.)75 755 y(External)h(functions)f(can)h(also)f(ha)o -(v)o(e)g(a)g(v)n(ariable)g(n)o(um)o(b)q(er)g(of)g(parameters)g(b)o(y)g -(using)h(the)g(standard)g(Sc)o(heme)75 801 y FB(dot)j -FD(notation.)f(F)m(or)d(instance,)153 892 y Ft(\(define-ext)o(er)o(nal) -i(printf)h(\(\(format)g(:string\))f(.)j(l\))193 937 y(:return-t)o(yp)o -(e)36 b(:int\))75 1071 y FD(de\014nes)16 b(a)e(Sc)o(heme)g(function)g -(with)h(one)f(or)h(more)e(parameters)i(\(the)g(\014rst)g(one)g(b)q -(eing)f(a)g(string\).)20 b(Of)15 b(course,)75 1116 y(the)h(parameters)f -(whic)o(h)g(constitute)h(the)g(v)n(ariable)e(parameters)h(list)g(m)o -(ust)f(ha)o(v)o(e)h(a)g(t)o(yp)q(e)h(whic)o(h)f(app)q(ears)h(in)75 -1162 y(the)e(third)g(column)f(of)g(T)m(able)g(4.)18 b(Some)13 -b(examples)f(using)i(the)h Fu(printf)d FD(function:)193 -1253 y Ft(\(printf)17 b("This)g(is)i(a)g(\045s)g(test")f("good"\))350 -1344 y Fs(=)-6 b Fn(\))19 b Fi(displays)62 b Ft(This)18 -b(is)h(a)g(good)g(test)193 1390 y(\(printf)e("char:)g('\045c')h(Dec:)g -('\04504d')f(Hex)i('\04504x'")e(#\\space)g(100)h(100\))350 -1481 y Fs(=)-6 b Fn(\))19 b Fi(displays)62 b Ft(char:)18 -b(')h(')g(Dec:)g('0100')e(Hex)h('0064')75 1619 y Fl(Note:)30 -b Fs(The)11 b(t)o(yp)q(es)h Ft(:dynamic-)o(pt)o(r)p Fs(,)c -Ft(:static-p)o(tr)f Fs(and)12 b Ft(:string)c Fs(are)j(compatible)i -(when)f(used)f(for)g(foreign)h(function)75 1668 y(parameter.)18 -b(This)c(giv)o(es)g(a)f(seman)o(tic)h(whic)o(h)g(is)g(similar)h(to)e -(the)g(one)h(of)e(C,)h(where)g Ft(void)18 b(*)12 b Fs(is)i(a)f -(compatible)i(with)f(all)75 1718 y(other)e(p)q(oin)o(ter)h(t)o(yp)q -(es.)k(Ho)o(w)o(ev)o(er,)11 b(di\013erenciatin)q(g)j(those)e(t)o(yp)q -(es)g(is)g(useful)h(for)e(con)o(v)o(erting)j(the)d(function)i(return)f -(v)n(alue)75 1768 y(to)h(a)g(prop)q(er)h(Sc)o(heme)f(t)o(yp)q(e.)75 -1840 y Fl(Note:)38 b Fs(When)15 b(a)f(function)i(has)f(a)f -Ft(:return-ty)o(pe)d Fs(whic)o(h)k(is)g Ft(:string)p -Fs(,)c Ft(:dynamic-pt)o(r)g Fs(or)j Ft(:static-pt)o(r)p -Fs(,)d(and)k(the)75 1886 y(return)e(v)n(alue)h(is)g(the)f(C)f -Ft(NULL)f Fs(p)q(oin)o(ter,)j(the)f(Sc)o(heme)g(v)n(alue)h(returned)g -(b)o(y)f(the)g(function)h(is,)g(b)o(y)f(con)o(v)o(en)o(tion,)h(equal)g -(to)75 1932 y Ft(#f)p Fs(.)j(F)m(or)c(instance,)h(the)g(GNU)f -Ft(readline)d Fs(function)k(allo)o(ws)h(line)g(editing)g -Fl(\022)-20 b(a)14 b(la)h Fs(Emacs)f(returns)f Ft(NULL)f -Fs(when)i(the)f(user)75 1977 y(has)f(t)o(yp)q(ed)h(an)f(end)g(of)g -(\014le.)17 b(The)12 b(follo)o(wing)i(lines)f(sho)o(w)f(ho)o(w)g(to)g -(mak)o(e)g(a)g(simple)h(shell-lik)o(e)i(toplev)o(el)f(using)f(FFIs.)153 -2068 y Ft(\(define-ext)o(er)o(nal)j(system)h(\(\(var)h(\(:char)f -(*\)\)\))193 2114 y(:return-t)o(yp)o(e)g(:int\))153 2205 -y(\(define-ext)o(er)o(nal)f(readline)g(\(\(prompt)h(:string\)\))193 -2251 y(:library-)o(na)o(me)f("libreadli)o(ne")193 2296 -y(:return-t)o(yp)o(e)36 b(:string\))153 2388 y(;;)19 -b(A)h(Shell-li)o(ke)c(toplevel)153 2433 y(\(do)j(\(\(l)f(\(readline)f -("?>)h("\))h(\(readline)d("?>)i("\)\)\))232 2479 y(\(\(not)g(l\)\))193 -2525 y(\(system)f(l\)\))p 75 2622 705 2 v 106 2649 a -Fr(11)139 2661 y Fq(P)o(oin)o(ters)d(de\014ned)g(with)i -Fo(:dynamic-p)o(tr)d Fq(are)i(alw)o(a)o(ys)g(unallo)q(cated)e(with)j -Fo(free)p Fq(.)27 b(Consequen)o(tly)m(,)15 b(areas)f(allo)q(cated)g -(with)75 2700 y(another)9 b(allo)q(cator)g(than)i(the)g(standard)e(one) -i(m)o(ust)f(b)q(e)h(declared)e(as)i Fo(:static-ptr)d -Fq(and)j(freed)f(b)o(y)h(hand)106 2728 y Fr(12)139 2740 -y Fq(Usage)d(of)g(mallo)q(c)f(and)h(free)g(are)g(for)g(illustration)e -(purp)q(ose)h(here.)13 b(Their)8 b(usage)g(in)g(a)h(program)d(m)o(ust)i -(b)q(e)g(a)o(v)o(oided,)f(if)i(p)q(ossible,)75 2779 y(b)q(ecause)j(it)i -(can)f(ha)o(v)o(e)g(in)o(teract)f(badly)h(with)h(the)f(w)o(a)o(y)i(the) -e(in)o(terpreter)e(manages)h(memory)g(or)i(it)g(can)f(conduct)f(to)i -Fp(cr)n(ashing)75 2819 y Fq(programs)9 b(if)i(y)o(ou)g(don't)f(tak)o(e) -h(care.)p eop -%%Page: 50 50 -50 49 bop 75 47 a FC(50)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(\(external-exists?)k FB(entry)t -Fu(\))1072 b FD(pro)q(cedure)75 229 y Fu(\(external-exists?)18 -b FB(entry)k(libr)n(ary)t Fu(\))932 b FD(pro)q(cedure)75 -298 y(Returns)19 b Fu(#t)f FD(if)f FB(entry)22 b FD(is)c(de\014ned)i -(as)e(an)g(external)h(sym)o(b)q(ol)d(in)i FB(libr)n(ary)s -FD(.)31 b(If)18 b FB(libr)n(ary)i FD(is)e(not)h(pro)o(vided)f(the)75 -344 y(sym)o(b)q(ol)12 b(is)h(searc)o(hed)j(in)d(the)h -Fz(STk)g FD(in)o(terpreter)i(or)d(in)h(libraries)f(that)h(it)f(uses.)19 -b(This)14 b(function)f(can)h(b)q(e)g(useful)75 389 y(to)g(de\014ne)h -(external)f(functions)g(conditionally:)193 462 y Ft(\(when)j -(\(external-e)o(xi)o(sts)o(?)f("dup2"\))252 508 y(\(define-)o(ext)o -(ern)o(al)g(dup2)i(\(\(oldfd)f(:int\))h(\(newfd)f(:int\)\))310 -554 y(:return-typ)o(e)f(:int\)\))75 724 y Fu(\(c-string->string)i -FB(str)t Fu(\))1117 b FD(pro)q(cedure)75 793 y(STk)13 -b(strings)h(are)g(more)f(general)h(than)f(C)h(strings)g(since)g(they)g -(accept)h(n)o(ull)e(c)o(haracter.)19 b Fu(c-string->string)75 -839 y FD(tak)o(es)c(an)f(area)g(of)g(c)o(haracters)i(built)e(b)o(y)g(a) -g(call)f(to)h(a)g(foreign)g(function)g(\(t)o(ypically)f(the)i(result)g -(of)f(a)g(function)75 884 y(returning)d(a)e Fu(:static-ptr)p -FD(,)g Fu(:dynamic-ptr)e FD(or)j Fu(:string)p FD(\))f(and)h(con)o(v)o -(ert)h(it)e(to)h(a)g(prop)q(er)h(Sc)o(heme)f(string.)153 -958 y Ft(\(define-ext)o(er)o(nal)16 b(sprintf)h(\(\(str)g(:string\))g -(\(format)g(:string\))f(.)k(l\))212 1003 y(:return-ty)o(pe)36 -b(:int\))153 1094 y(\(let)19 b(\(\(str)e(\(make-stri)o(ng)f(5)j -(#\\?\)\)\))193 1140 y(\(sprintf)d(str)j("\045x")f(100\))193 -1186 y(\(cons)f(str)i(\(C-string)o(->s)o(tr)o(ing)d(str\)\)\))350 -1277 y Fs(=)-6 b Fn(\))19 b Ft(\("64\\0??")d(.)j("64"\))75 -1459 y FG(6.25)56 b(Miscellaneous)75 1536 y FD(This)14 -b(section)g(lists)g(the)h(primitiv)o(es)d(de\014ned)j(in)e -Fz(STk)h FD(that)g(did)g(not)g(\014t)g(an)o(ywhere)g(else.)75 -1639 y Fu(\(eval)21 b Fm(h)p FD(expr)p Fm(i)q Fu(\))1379 -b FD(syn)o(tax)75 1689 y Fu(\(eval)21 b Fm(h)p FD(expr)p -Fm(i)i(h)p FD(en)o(vironmen)o(t)p Fm(i)o Fu(\))1100 b -FD(syn)o(tax)75 1758 y(Ev)n(aluates)20 b Fm(h)p FD(expr)p -Fm(i)g FD(in)f(the)i(giv)o(en)e(en)o(vironmen)o(t.)34 -b Fm(h)p FD(En)o(vironmen)o(t)p Fm(i)19 b FD(ma)o(y)f(b)q(e)i(omitted,) -f(in)h(whic)o(h)f(case)i(it)75 1804 y(defaults)14 b(to)g(the)g(global)e -(en)o(vironmen)o(t.)153 1877 y Ft(\(define)17 b(foo)i(\(let)f(\(\(a)g -(1\)\))h(\(lambda)e(\(\))i(a\)\)\))153 1922 y(\(foo\))450 -b Fs(=)-6 b Fn(\))19 b Ft(1)153 1968 y(\(eval)f('\(set!)f(a)j(2\))f -(\(procedu)o(re-)o(en)o(vir)o(onm)o(en)o(t)e(foo\)\))153 -2014 y(\(foo\))450 b Fs(=)-6 b Fn(\))19 b Ft(2)75 2184 -y Fu(\(version)n(\))1388 b FD(pro)q(cedure)75 2257 y(returns)15 -b(a)f(string)g(iden)o(tifying)e(the)j(curren)o(t)g(v)o(ersion)f(of)g -Fz(STk)p FD(.)75 2355 y Fu(\(machine-type)m(\))1279 b -FD(pro)q(cedure)75 2428 y(returns)15 b(a)d(string)i(iden)o(tifying)d -(the)j(kind)e(of)h(mac)o(hine)f(whic)o(h)h(is)f(running)h(the)h(in)o -(terpreter.)20 b(The)13 b(form)e(of)i(the)75 2478 y(result)i(is)e -Fu([os-name]-[os-versi)o(on]-[)o(proce)o(ssor-)o(type])o -FD(.)75 2575 y Fu(\(random)20 b FB(n)s Fu(\))1362 b FD(pro)q(cedure)75 -2648 y(returns)15 b(an)f(in)o(teger)g(in)g(the)g(range)g(0,)g -FB(n)e Fm(\000)e FD(1)j(inclusiv)o(e.)75 2745 y Fu(\(set-random-seed!) -18 b FB(se)n(e)n(d)t Fu(\))1094 b FD(pro)q(cedure)75 -2819 y(Set)14 b(the)h(random)d(seed)j(to)f(the)h(sp)q(eci\014ed)g -FB(se)n(e)n(d)5 b FD(.)18 b Fu(Seed)13 b FD(m)o(ust)f(b)q(e)j(an)f(in)o -(teger)g(whic)o(h)g(\014ts)g(in)g(a)f(C)h Fu(long)21 -b(int)p FD(.)p eop -%%Page: 51 51 -51 50 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(51)p 75 64 1763 2 v 75 179 a Fu(\(eval-string)19 b -FB(string)j(envir)n(onment)t Fu(\))925 b FD(pro)q(cedure)75 -248 y(Ev)n(aluates)18 b(the)h(con)o(ten)o(ts)h(of)e(the)h(giv)o(en)f -FB(string)k FD(in)c(the)h(giv)o(en)f FB(envir)n(onment)k -FD(and)d(returns)h(its)e(result.)33 b(If)75 294 y FB(envir)n(onment)18 -b FD(is)c(omitted)f(it)h(defaults)g(to)g(the)g(global)f(en)o(vironmen)o -(t.)k(If)d(ev)n(aluation)e(leads)j(to)e(an)h(error,)h(the)75 -340 y(result)g(of)e Fu(eval-string)e FD(is)j(unde\014ned.)153 -419 y Ft(\(define)j(x)j(1\))153 465 y(\(eval-strin)o(g)c("\(+)j(x)g -(1\)"\))350 510 y Fs(=)-6 b Fn(\))19 b Ft(2)153 556 y(\(eval-strin)o(g) -d("x")j(\(let)f(\(\(x)g(2\)\))h(\(the-envi)o(ron)o(me)o(nt\))o(\)\))350 -602 y Fs(=)-6 b Fn(\))19 b Ft(2)75 787 y Fu(\(read-from-string)f -Fm(h)p FD(string)p Fm(i)q Fu(\))1033 b FD(pro)q(cedure)75 -856 y(P)o(erforms)9 b(a)h(read)g(from)f(the)h(giv)o(en)g -FB(string)s FD(.)16 b(If)10 b FB(string)j FD(is)d(the)g(empt)o(y)f -(string,)h(an)g(end)g(of)g(\014le)g(ob)r(ject)g(is)g(returned.)75 -902 y(If)k(an)f(error)i(o)q(ccurs)g(during)f(string)g(reading,)f(the)i -(result)f(of)g Fu(read-from-strin)o(g)d FD(is)j(unde\014ned.)153 -981 y Ft(\(read-from-)o(st)o(rin)o(g)j("123)h(456"\))350 -1027 y Fs(=)-6 b Fn(\))19 b Ft(123)153 1073 y(\(read-from-)o(st)o(rin)o -(g)e(""\))350 1118 y Fs(=)-6 b Fn(\))19 b Ft(an)g(eof)f(object)75 -1304 y Fu(\(dump)j FB(string)t Fu(\))1323 b FD(pro)q(cedure)75 -1377 y Fu(Dump)14 b FD(grabs)g(the)h(curren)o(t)h(con)o(tin)o(uation)28 -b(and)15 b(creates)h(an)e(image)f(of)h(the)h(curren)o(t)h -Fz(STk)e FD(in)o(terpreter)j(in)d(the)75 1427 y(\014le)f(whose)g(name)e -(is)h FB(string)519 1412 y Fy(13)554 1427 y FD(.)17 b(This)c(image)d -(can)j(b)q(e)g(used)h(later)e(to)h(restart)h(the)f(in)o(terpreter)h -(from)d(the)i(sa)o(v)o(ed)75 1477 y(state.)19 b(See)c(the)f -Fz(STk)g FD(man)f(page)g(ab)q(out)h(the)h Fu(-image)d -FD(option)h(for)h(more)f(details.)75 1527 y Fl(Note:)32 -b Fs(Image)14 b(creation)g(cannot)g(b)q(e)f(done)h(if)f(Tk)g(is)g -(initiali)q(zed)q(.)75 1633 y Fu(\(trace-var)20 b FB(symb)n(ol)h(thunk) -t Fu(\))1078 b FD(pro)q(cedure)75 1702 y Fu(Trace-var)11 -b FD(call)i(the)h(giv)o(en)f FB(thunk)18 b FD(when)c(the)g(v)n(alue)f -(of)f(the)i(v)n(ariable)e(denoted)j(b)o(y)e FB(symb)n(ol)k -FD(is)c(c)o(hanged.)153 1782 y Ft(\(define)k(x)j(1\))153 -1827 y(\(define)d(y)j(0\))153 1873 y(\(trace-var)c('x)j(\(lambda)e -(\(\))i(\(set!)e(y)j(1\)\)\))153 1919 y(\(set!)e(x)h(2\))153 -1964 y(\(cons)f(x)h(y\))350 2010 y Fs(=)-6 b Fn(\))19 -b Ft(\(2)g(.)g(1\))75 2135 y Fl(Note:)32 b Fs(Sev)o(eral)14 -b(traces)f(can)g(b)q(e)g(asso)q(ciated)h(with)g(a)e(single)j(sym)o(b)q -(ol.)j(They)13 b(are)g(executed)g(in)h(rev)o(erse)f(order)g(to)f(their) -75 2181 y(de\014nition.)20 b(F)m(or)12 b(instance,)j(the)e(execution)i -(of)153 2260 y Ft(\(begin)193 2306 y(\(trace-va)o(r)h('z)j(\(lambda)e -(\(\))i(\(display)e("One"\)\)\))193 2351 y(\(trace-va)o(r)f('z)j -(\(lambda)e(\(\))i(\(display)e("Two"\)\)\))193 2397 y(\(set!)g(z)j -(10\)\))75 2526 y Fs(will)15 b(displa)o(y)g(the)e(string)h -Ft("Two")d Fs(b)q(efore)i(the)g(string)i Ft("One")10 -b Fs(on)k(the)f(curren)o(t)g(output)h(p)q(ort.)75 2632 -y Fu(\(untrace-var)19 b FB(symb)n(ol)t Fu(\))1155 b FD(pro)q(cedure)75 -2706 y(Deletes)15 b(all)e(the)h(traces)h(asso)q(ciated)g(to)f(the)g(v)n -(ariable)f(denoted)i(b)o(y)e FB(symb)n(ol)5 b FD(.)p -75 2741 705 2 v 106 2768 a Fr(13)139 2779 y Fq(Image)10 -b(creation)g(is)i(not)g(y)o(et)g(implemen)n(ted)d(on)j(all)g(systems.)k -(The)c(curren)o(t)e(v)o(ersion)h(\(3.99\))f(allo)o(ws)i(image)f -(dumping)f(only)75 2819 y(on)h(some)f(platforms:)j(SunOs)e(4.1.x,)f -(Lin)o(ux)h(1,)g(F)m(reeBsd)p eop -%%Page: 52 52 -52 51 bop 75 47 a FC(52)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a Fu(\(error)21 b FB(string)g Fx(str)q(ing)466 -185 y Fy(1)507 179 y Fx(obj)562 185 y Fy(2)602 179 y -Fx(:)7 b(:)g(:)e Fu(\))980 b FD(pro)q(cedure)75 252 y -Fu(error)14 b FD(prin)o(ts)h(the)h FB(obj)6 b FD(s)15 -b(according)g(to)g(the)g(sp)q(eci\014cation)h(giv)o(en)e(in)h -FB(string)j FD(on)c(the)i(curren)o(t)g(error)g(p)q(ort)f(\(or)75 -302 y(in)e(an)g(error)h(windo)o(w)f(if)g(Tk)g(is)g(initialized\).)k -(The)d(sp)q(eci\014cation)g(string)f(follo)o(ws)f(the)i(\\tilde)f(con)o -(v)o(en)o(tions")g(of)75 352 y Fu(format)p FD(\(see)h(6.10\).)j(Once)e -(the)g(message)e(is)h(prin)o(ted,)g(execution)g(returns)i(to)d(toplev)o -(el.)75 445 y Fu(\(gc)o(\))1497 b FD(pro)q(cedure)75 -518 y(Runs)14 b(the)g(garbage)g(collector.)k(See)d(6.18)e(for)g(the)i -(signals)e(asso)q(ciated)i(to)e(garbage)h(collection.)75 -612 y Fu(\(gc-stats)n(\))1366 b FD(pro)q(cedure)75 685 -y(Pro)o(vides)15 b(some)e(statistics)i(ab)q(out)f(curren)o(t)i(memory) -11 b(usage.)19 b(This)c(pro)q(cedure)h(is)e(primarily)d(for)j -(debugging)75 735 y(the)g Fz(STk)h FD(in)o(terpreter,)g(hence)g(its)f -(w)o(eird)g(prin)o(ting)f(format.)75 828 y Fu(\(expand-heap)19 -b FB(n)s Fu(\))1253 b FD(pro)q(cedure)75 901 y(Expand)14 -b(the)g(heap)f(so)h(that)g(it)f(will)f(con)o(tains)h(at)g(least)h -FB(n)j FD(cells.)h(Normally)m(,)10 b(the)k(heap)g(automatically)d(gro)o -(ws)75 951 y(when)17 b(more)f(memory)e(is)j(needed.)28 -b(Ho)o(w)o(ev)o(er,)17 b(using)g(only)f(automatic)f(heap)i(gro)o(wing)f -(is)g(sometimes)f(v)o(ery)75 1001 y(p)q(enalizing.)20 -b(This)15 b(is)f(particularly)g(true)i(for)e(programs)g(whic)o(h)g -(uses)i(a)f(lot)f(of)g(temp)q(orary)g(data)g(\(whic)o(h)h(are)75 -1051 y(not)k(p)q(oin)o(ted)g(b)o(y)f(an)o(y)h(a)f(v)n(ariable\))g(and)h -(a)g(small)d(amoun)o(t)h(of)i(global)e(data.)33 b(In)19 -b(this)g(case,)h(the)g(garbage)75 1101 y(collector)15 -b(will)d(b)q(e)j(often)g(called)f(and)g(the)h(heap)f(will)f(not)i(b)q -(e)f(automatically)e(expanded)j(\(since)g(most)e(of)h(the)75 -1151 y(consumed)e(heap)g(will)f(b)q(e)h(reclaimed)f(b)o(y)h(the)h -(GC\).)e(This)h(could)g(b)q(e)h(anno)o(ying)d(sp)q(ecially)i(for)g -(program)e(where)75 1200 y(resp)q(onse)19 b(time)d(is)i(critical.)28 -b(Using)17 b Fu(expand-heap)e FD(p)q(ermits)i(to)h(enlarge)f(the)h -(heap)g(size)g(\(whic)o(h)g(is)f(set)i(to)75 1250 y(20000)13 -b(cells)h(b)o(y)f(default\),)h(to)f(a)o(v)o(oid)g(those)i(con)o(tin)o -(ual)d(calls)i(to)g(the)g(GC.)75 1343 y Fu(\(get-internal-inf)o(o)m(\)) -1170 b FD(pro)q(cedure)75 1417 y(Returns)15 b(a)e(7-length)h(v)o(ector) -g(whic)o(h)g(con)o(tains)g(the)g(follo)o(wing)e(informations:)137 -1491 y(0)21 b(total)13 b(cpu)h(used)h(in)f(milli)o(-seconds)137 -1570 y(1)21 b(n)o(um)o(b)q(er)13 b(of)g(cells)h(curren)o(tly)h(in)f -(use.)137 1649 y(2)21 b(total)13 b(n)o(um)o(b)q(er)g(of)g(allo)q(cated) -h(cells)137 1727 y(3)21 b(n)o(um)o(b)q(er)13 b(of)g(cells)h(used)h -(since)g(the)f(last)g(call)f(to)h Fu(get-internal-info)137 -1806 y FD(4)21 b(n)o(um)o(b)q(er)13 b(of)g(gc)h(runs)137 -1885 y(5)21 b(total)13 b(time)f(used)j(in)f(the)g(gc)137 -1964 y(6)21 b(a)13 b(b)q(o)q(olean)h(indicating)f(if)g(Tk)g(is)h -(initialized)75 2081 y Fu(\(sort)21 b FB(obj)h(pr)n(e)n(dic)n(ate)s -Fu(\))1194 b FD(pro)q(cedure)75 2151 y FB(Obj)18 b FD(m)o(ust)11 -b(b)q(e)i(a)e(list)h(or)g(a)g(v)o(ector.)18 b Fu(Sort)11 -b FD(returns)j(a)e(cop)o(y)g(of)f FB(obj)19 b FD(sorted)13 -b(according)f(to)g FB(pr)n(e)n(dic)n(ate)r FD(.)18 b -FB(Pr)n(e)n(dic)n(ate)75 2196 y FD(m)o(ust)13 b(b)q(e)i(a)f(pro)q -(cedure)j(whic)o(h)d(tak)o(es)g(t)o(w)o(o)g(argumen)o(ts)g(and)g -(returns)i(a)e(true)h(v)n(alue)f(if)f(the)i(\014rst)g(argumen)o(t)f(is) -75 2242 y(strictly)g(\\b)q(efore")g(the)h(second.)153 -2312 y Ft(\(sort)j('\(1)h(2)g(-4)g(12)g(9)g(-1)g(2)g(3\))g(<\))703 -2358 y Fs(=)-6 b Fn(\))19 b Ft(\(-4)g(-1)f(1)i(2)f(2)g(3)g(9)h(12\))153 -2404 y(\(sort)e(#\("one")f("two")h("three")f("four"\))271 -2449 y(\(lambda)g(\(x)i(y\))g(\(>)g(\(string-)o(len)o(gth)d(x\))j -(\(string-l)o(en)o(gth)d(y\)\)\)\))703 2495 y Fs(=)-6 -b Fn(\))19 b Ft(#\("three")d("four")i("one")f("two"\))89 -2658 y Fu(\(uncode)j FB(form)s Fu(\))1285 b FD(pro)q(cedure)75 -2728 y(When)18 b Fz(STk)h FD(ev)n(aluates)f(an)g(expression)h(it)f -(enco)q(des)i(it)d(so)h(that)h(further)g(ev)n(aluations)e(of)g(this)h -(expression)75 2773 y(will)13 b(b)q(e)i(more)e(e\016cien)o(t.)20 -b(Since)15 b(enco)q(ded)h(forms)d(are)i(generally)f(di\016cult)g(to)g -(read,)h Fu(uncode)e FD(can)h(b)q(e)h(used)h(to)75 2819 -y(\(re-\)obtain)e(the)g(original)e(form.)p eop -%%Page: 53 53 -53 52 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(53)p 75 64 1763 2 v 153 179 a Ft(\(define)17 b(\(foo)h(a)i(b\))212 -224 y(\(let)e(\(\(x)h(a\))g(\(y)g(\(+)f(b)i(1\)\)\))e(\(cons)f(x)j -(y\)\)\))153 316 y(\(procedure-)o(bo)o(dy)c(foo\))703 -361 y Fs(=)-6 b Fn(\))19 b Ft(\(lambda)e(\(a)i(b\))605 -407 y(\(let)f(\(\(x)g(a\))h(\(y)g(\(+)g(b)g(1\)\)\))f(\(cons)g(x)h -(y\)\)\))153 453 y(\(foo)g(1)g(2\))372 b Fs(=)-6 b Fn(\))19 -b Ft(\(1)g(.)g(3\))153 498 y(\(procedure-)o(bo)o(dy)d(foo\))703 -544 y Fs(=)-6 b Fn(\))39 b Ft(\(lambda)17 b(\(a)h(b\))605 -590 y(\(#let)f(\(x)i(y\))722 635 y(\(#)742 -681 y(\(#)j(#)e(1\)\))644 -727 y(\(#)i(#)958 -772 y(#\)\)\))153 864 y(\(uncode)e(\(procedure-)o -(bo)o(dy)f(foo\)\))703 909 y Fs(=)-6 b Fn(\))19 b Ft(\(lambda)e(\(a)i -(b\))624 955 y(\(let)f(\(\(x)h(a\))g(\(y)f(\(+)h(b)g(1\)\)\))g(\(cons)e -(x)i(y\)\)\))75 1084 y Fl(Note:)35 b Fs(When)15 b(a)f(macro)g(has)g(b)q -(een)h(directly)g(expanded)h(in)o(to)f(the)f(macro)g(call)h(co)q(de,)f -(it)g(is)g(not)h(p)q(ossible)h(to)d(retriev)o(e)75 1133 -y(the)g(original)j(macro)d(call.)18 b(Set)c Ft(*debug*)c -Fs(to)j Ft(#t)f Fs(to)h(a)o(v)o(oid)h(macro)f(expansion)j(in-lining.)75 -1239 y Fu(\(time)21 b Fm(h)p FD(expr)p Fm(i)q Fu(\))1387 -b FD(macro)75 1312 y(Ev)n(aluates)12 b(the)h(expression)h -Fm(h)p FD(expr)p Fm(i)f FD(in)f(the)h(curren)o(t)h(en)o(vironmen)o(t.)i -(Prin)o(ts)d(the)g(elapsed)g(CPU)g(time)e(and)h(the)75 -1362 y(n)o(um)o(b)q(er)h(of)g(conses)j(used)f(b)q(efore)f(returning)h -(the)f(result)h(of)e(this)h(ev)n(aluation.)75 1467 y -Fu(\(apropos)20 b FB(symb)n(ol)t Fu(\))1242 b FD(pro)q(cedure)75 -1536 y Fu(Apropos)15 b FD(returns)j(a)e(list)g(of)f(sym)o(b)q(ol)g -(whose)i(prin)o(t)f(name)f(con)o(tains)h(the)h(c)o(haracters)h(of)e -FB(symb)n(ol)t FD(.)25 b(Sym)o(b)q(ols)75 1582 y(are)14 -b(searc)o(hed)i(for)d(in)h(the)g(curren)o(t)i(en)o(vironmen)o(t.)153 -1661 y Ft(\(apropos)h('cadd\))350 1706 y Fs(=)-6 b Fn(\))19 -b Ft(\(caddar)e(caddr)h(cadddr\))75 1890 y Fu(\(inspect)i -FB(obj)6 b Fu(\))1307 b FD(pro)q(cedure)75 1964 y Fu(Inspect)15 -b FD(p)q(ermits)g(to)h(graphically)f(insp)q(ect)i(an)f(ob)r(ject.)25 -b(The)17 b(\014rst)g(call)e(of)h(this)g(pro)q(cedure)i(creates)g(a)e -(top)75 2013 y(lev)o(el)g(windo)o(w)g(con)o(taining)g(the)h(ob)r(ject)h -(to)e(insp)q(ect)i(and)f(its)f(curren)o(t)i(v)n(alue.)26 -b(If)17 b(the)g(insp)q(ector)h(windo)o(w)e(is)75 2063 -y(already)g(on)g(screen,)j FB(obj)j FD(will)15 b(b)q(e)i(app)q(ended)h -(to)e(the)h(list)f(of)g(insp)q(ected)i(ob)r(jects.)27 -b(The)17 b(insp)q(ector)g(windo)o(w)75 2113 y(con)o(tains)i(men)o(us)f -(whic)o(h)g(p)q(ermit)g(to)g(call)g(the)i(view)o(er)f(or)f(detailer)h -(on)g(eac)o(h)g(insp)q(ected)h(ob)r(ject.)33 b(See)20 -b(the)75 2163 y(on-line)13 b(do)q(cumen)o(tation)g(for)g(further)i -(details.)j(A)c(view)g(of)f(the)h(general)g(insp)q(ector)h(is)f(giv)o -(en)g(in)f(\014gure)h(1.)75 2213 y Fl(Note:)32 b Fs(Tk)13 -b(m)o(ust)g(b)q(e)h(initialize)q(d)i(to)d(use)g Ft(inspect)p -Fs(.)75 2318 y Fu(\(view)21 b FB(obj)6 b Fu(\))1372 b -FD(pro)q(cedure)75 2391 y Fu(View)14 b FD(p)q(ermits)g(to)h(obtain)f(a) -h(graphical)f(represen)o(tation)i(of)e(an)h Fz(STk)g -FD(ob)r(ject.)22 b(The)15 b(t)o(yp)q(e)h(of)e(represen)o(tation)75 -2441 y(dep)q(ends)21 b(on)f(the)g(t)o(yp)q(e)g(of)g(the)g(view)o(ed)g -(ob)r(ject.)36 b(Here)21 b(again,)f(men)o(us)f(are)h(pro)o(vided)g(to)f -(switc)o(h)h(to)g(the)75 2491 y(insp)q(ector)d(or)f(to)g(the)h -(detailer.)24 b(See)17 b(the)g(on-line)e(do)q(cumen)o(tation)g(for)h -(more)f(details.)24 b(A)16 b(snapshot)g(of)g(the)75 2541 -y(view)o(er)e(is)g(giv)o(en)f(in)h(\014gure)g(2.)75 2591 -y Fl(Note:)32 b Fs(Tk)13 b(m)o(ust)g(b)q(e)h(initialize)q(d)i(to)d(use) -g Ft(view)p Fs(.)75 2696 y Fu(\(detail)20 b FB(obj)6 -b Fu(\))1329 b FD(pro)q(cedure)75 2769 y Fu(detail)9 -b FD(p)q(ermits)h(to)h(displa)o(y)e(the)j(\014elds)f(of)f(a)g(comp)q -(osite)g(Sc)o(heme)g(ob)r(ject.)18 b(The)11 b(t)o(yp)q(e)g(of)f -(detailer)g(dep)q(ends)j(on)75 2819 y(the)i(t)o(yp)q(e)f(of)g(the)g -(comp)q(osite)g(ob)r(ject)g(detailed.)19 b(Here)c(again,)e(men)o(us)g -(are)h(pro)o(vided)g(to)g(go)g(to)g(the)g(insp)q(ector)p +41 40 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(41)p 37 64 1838 2 v 168 190 a Fv(\(add-signal-handler)o(!)19 +b(|SIGHADGC|)h(handler1\))168 240 y(\(add-signal-handler)o(!)f +(|SIGHADGC|)h(handler2\))168 290 y(\(gc\))168 340 y(x\))343 +390 y Fu(=)-7 b Fp(\))21 b Fv(\(2\))37 613 y Fw(\(get-signal-handlers)n +(\))1140 b FF(pro)q(cedure)37 669 y Fw(\(get-signal-handlers)22 +b FD(sig)t Fw(\))1058 b FF(pro)q(cedure)37 750 y(Returns)18 +b(the)f(handlers,)h(or)f(the)g(list)h(of)f(handlers,)h(asso)q(ciated)f +(to)g(the)g(signal)h FD(sig)s FF(.)26 b(If)17 b FD(sig)k +FF(is)c(omitted,)37 807 y Fw(get-signal-handlers)c FF(returns)i(a)g(v)o +(ector)f(of)h(all)h(the)g(signal)g(handlers)g(curren)o(tly)g(in)g +(e\013ect.)37 934 y FI(6.19)56 b(Hash)19 b(tables)37 +1021 y FF(A)g(hash)g(table)g(consists)f(of)g(zero)h(or)f(more)g(en)o +(tries,)h(eac)o(h)g(consisting)g(of)f(a)g(k)o(ey)h(and)f(a)h(v)m(alue.) +31 b(Giv)o(en)37 1077 y(the)18 b(k)o(ey)f(for)g(an)h(en)o(try)l(,)f +(the)h(hashing)g(function)g(can)g(v)o(ery)f(quic)o(kly)i(lo)q(cate)f +(the)f(en)o(try)l(,)h(and)f(hence)i(the)37 1134 y(corresp)q(onding)e(v) +m(alue.)23 b(There)16 b(ma)o(y)g(b)q(e)g(at)f(most)g(one)h(en)o(try)g +(in)g(a)g(hash)g(table)g(with)g(a)g(particular)g(k)o(ey)l(,)37 +1190 y(but)g(man)o(y)f(en)o(tries)g(ma)o(y)g(ha)o(v)o(e)f(the)i(same)f +(v)m(alue.)37 1247 y FB(STk)g FF(hash)g(tables)h(gro)o(w)e(gracefully)i +(as)e(the)h(n)o(um)o(b)q(er)h(of)f(en)o(tries)g(increases,)h(so)e(that) +h(there)g(are)g(alw)o(a)o(ys)37 1304 y(less)g(than)g(three)f(en)o +(tries)h(p)q(er)g(hash)f(buc)o(k)o(et,)g(on)h(a)o(v)o(erage.)j(This)d +(allo)o(ws)g(for)e(fast)h(lo)q(okups)h(regardless)f(of)37 +1360 y(the)i(n)o(um)o(b)q(er)f(of)g(en)o(tries)h(in)g(a)f(table.)37 +1453 y Fn(Note:)37 b Fu(Hash)14 b(table)g(manipulation)d(pro)q(cedures) +16 b(are)e(built)f(up)q(on)h(the)h(e\016cien)o(t)f(Tcl)g(hash)g(table)g +(pac)o(k)n(age.)37 1572 y Fw(\(make-hash-table)n(\))1236 +b FF(pro)q(cedure)37 1628 y Fw(\(make-hash-table)22 b +FD(c)n(omp)n(arison)s Fw(\))985 b FF(pro)q(cedure)37 +1684 y Fw(\(make-hash-table)22 b FD(c)n(omp)n(arison)i(hash)s +Fw(\))873 b FF(pro)q(cedure)37 1765 y Fw(Make-hash-table)11 +b FF(admits)h(three)h(di\013eren)o(t)g(forms.)18 b(The)12 +b(most)g(general)h(form)f(admit)g(t)o(w)o(o)f(argumen)o(ts.)37 +1821 y(The)20 b(\014rst)e(argumen)o(t)g(is)h(a)g(comparison)g(function) +h(whic)o(h)f(determine)h(ho)o(w)e(k)o(eys)h(are)g(compared;)h(the)37 +1878 y(second)h(argumen)o(t)d(is)i(a)g(function)g(whic)o(h)h(computes)e +(a)g(hash)h(co)q(de)g(for)f(an)h(ob)s(ject)f(and)g(returns)h(the)37 +1934 y(hash)c(co)q(de)g(as)f(a)g(non)h(negativ)o(e)f(in)o(teger.)21 +b(Ob)s(jets)15 b(with)g(the)h(same)f(hash)g(co)q(de)h(are)f(stored)g +(in)i(an)e(A-list)37 1991 y(registered)h(in)g(the)f(buc)o(k)o(et)h +(corresp)q(onding)g(to)e(the)i(k)o(ey)l(.)37 2048 y(If)g(omitted,)106 +2144 y Fo(\017)22 b Fw(hash)15 b FF(defaults)g(to)g(the)g +Fw(hash-table-hash)e FF(pro)q(cedure.)106 2240 y Fo(\017)22 +b Fw(comparison)38 b FF(defaults)15 b(to)g(the)g Fw(eq?)g +FF(pro)q(cedure)37 2329 y(Consequen)o(tly)l(,)125 2419 +y Fv(\(define)20 b(h)i(\(make-hash-tabl)o(e\)\))37 2558 +y FF(is)16 b(equiv)m(alen)o(t)h(to)125 2648 y Fv(\(define)j(h)i +(\(make-hash-tabl)o(e)d(eq?)i(hash-table-hash\)\))37 +2787 y FF(Another)16 b(in)o(teresting)g(example)g(is)p eop +%%Page: 42 42 +42 41 bop 37 45 a FE(42)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 125 190 a Fv(\(define)j(h)i(\(make-hash-tabl)o(e)d +(string-ci=?)h(string-length\)\))37 327 y FF(whic)o(h)f(de\014nes)f(a)f +(new)g(hash)h(table)f(whic)o(h)i(uses)e Fw(string-ci=?)25 +b FF(for)17 b(comparing)g(k)o(eys.)26 b(Here,)18 b(w)o(e)f(use)37 +377 y(the)j(string-length)f(as)g(a)g(\(v)o(ery)f(simple\))i(hashing)g +(function.)32 b(Of)19 b(course,)h(a)e(function)i(whic)o(h)g(giv)o(es)f +(a)37 426 y(k)o(ey)f(dep)q(ending)i(of)d(the)g(c)o(haracters)g(comp)q +(osing)h(the)g(string)f(giv)o(es)h(a)f(b)q(etter)g(repartition)h(and)g +(should)37 476 y(probably)e(enhance)f(p)q(erformances.)20 +b(F)l(or)14 b(instance,)h(the)g(follo)o(wing)g(call)h(to)e +Fw(make-hash-table)e FF(should)37 526 y(return)k(a)f(more)f(e\016cien)o +(t,)i(ev)o(en)f(if)h(not)f(p)q(erfect,)g(hash)g(table:)125 +613 y Fv(\(make-hash-table)212 662 y(string-ci=?)212 +712 y(\(lambda)20 b(\(s\))255 762 y(\(let)h(\(\(len)g(\(string-length)e +(s\)\)\))299 812 y(\(do)i(\(\(h)g(0\))44 b(\(i)21 b(0)g(\(+)h(i)f +(1\)\)\))386 862 y(\(\(=)g(i)h(len\))f(h\))343 911 y(\(set!)f(h)i(\(+)f +(h)h(\(char->integer)669 961 y(\(char-downcase)d(\(string-ref)h(s)h +(i\)\)\)\)\)\)\)\)\))37 1104 y Fn(Note:)49 b Fu(Hash)17 +b(tables)g(with)f(a)h(comparison)e(function)i(equal)f(to)h +Fv(eq?)f Fu(or)h Fv(string=?)25 b Fu(are)17 b(handled)g(in)f(an)h(more) +37 1161 y(e\016cien)o(t)c(w)o(a)o(y)f(\(in)g(fact,)g(they)h(don't)e +(use)i(the)g Fv(hash-table-hash)c Fu(fucn)o(tion)j(to)g(sp)q(eed)i(up)e +(hash)h(table)f(retriev)n(als\).)37 1334 y Fw(\(hash-table?)23 +b FD(obj)7 b Fw(\))1242 b FF(pro)q(cedure)37 1414 y(Returns)16 +b Fw(#t)f FF(if)h FD(obj)22 b FF(is)15 b(a)g(hash)g(table,)h(returns)f +Fw(#f)g FF(otherwise.)37 1530 y Fw(\(hash-table-hash)22 +b FD(obj)7 b Fw(\))1147 b FF(pro)q(cedure)37 1610 y Fw(hash-table-hash) +16 b FF(computes)i(a)g(hash)g(co)q(de)h(for)e(an)h(ob)s(ject)f(and)h +(returns)g(the)g(hash)g(co)q(de)h(as)e(a)h(non)37 1667 +y(negativ)o(e)e(in)o(teger.)k(A)15 b(prop)q(ert)o(y)g(of)g +Fw(hash-table-hash)e FF(is)j(that)151 1760 y Fw(\(equal?)47 +b(x)24 b(y\))9 b FF(implies)k Fw(\(equal?)46 b(\(hash-table-hash)22 +b(x\))i(\(hash-table-hash)d(y\))37 1853 y FF(as)15 b(the)h(the)f +(Common)f(Lisp)j Fw(sxhash)d FF(function)i(from)e(whic)o(h)j(this)e +(pro)q(cedure)h(is)g(mo)q(deled.)37 1969 y Fw(\(hash-table-put!)22 +b FD(hash)i(key)g(value)s Fw(\))908 b FF(pro)q(cedure)37 +2049 y Fw(Hash-table-put!)14 b FF(en)o(ters)h(an)h(asso)q(ciation)g(b)q +(et)o(w)o(een)f FD(key)20 b FF(and)15 b FD(value)k FF(in)e(the)e +FD(hash)20 b FF(table.)h(The)16 b(v)m(alue)37 2106 y(returned)g(b)o(y)f +Fw(hash-table-put!)e FF(is)j(unde\014ned.)37 2222 y Fw +(\(hash-table-get)22 b FD(hash)i(key)t Fw(\))1056 b FF(pro)q(cedure)37 +2279 y Fw(\(hash-table-get)22 b FD(hash)i(key)g(default)t +Fw(\))900 b FF(pro)q(cedure)37 2352 y Fw(Hash-table-get)16 +b FF(returns)h(the)g(v)m(alue)i(asso)q(ciated)e(with)h +FD(key)j FF(in)d(the)g(giv)o(en)f FD(hash)k FF(table.)27 +b(If)18 b(no)f(v)m(alue)37 2402 y(has)f(b)q(een)h(asso)q(ciated)f(with) +f FD(key)20 b FF(in)c FD(hash)t FF(,)f(the)h(sp)q(eci\014ed)i +FD(default)i FF(is)c(returned)g(if)g(giv)o(en;)g(otherwise)g(an)37 +2452 y(error)f(is)h(raised.)125 2538 y Fv(\(define)k(h1)h +(\(make-hash-table\)\))125 2588 y(\(hash-table-put!)d(h1)k('foo)e +(\(list)h(1)h(2)f(3\)\))125 2638 y(\(hash-table-get)40 +b(h1)22 b('foo\))343 2688 y Fu(=)-7 b Fp(\))21 b Fv(\(1)h(2)f(3\))125 +2738 y(\(hash-table-get)40 b(h1)22 b('bar)e('absent\))343 +2787 y Fu(=)-7 b Fp(\))21 b Fv(absent)p eop +%%Page: 43 43 +43 42 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(43)p 37 64 1838 2 v 125 190 a Fv(\(hash-table-get)40 +b(h1)22 b('bar\))343 240 y Fu(=)-7 b Fp(\))21 b Fi(error)125 +290 y Fv(\(hash-table-put!)d(h1)k('\(a)f(b)g(c\))h('present\))125 +340 y(\(hash-table-get)40 b(h1)22 b('\(a)f(b)g(c\))h('absent\))343 +390 y Fu(=)-7 b Fp(\))21 b Fv('absent)125 489 y(\(define)f(h2)h +(\(make-hash-table)e(equal?\)\))125 539 y(\(hash-table-put!)f(h2)k +('\(a)f(b)g(c\))h('present\))125 589 y(\(hash-table-get)40 +b(h2)22 b('\(a)f(b)g(c\)\))343 639 y Fu(=)-7 b Fp(\))21 +b Fv('present)37 842 y Fw(\(hash-table-remove!)h FD(hash)i(key)t +Fw(\))960 b FF(pro)q(cedure)37 922 y FD(hash)24 b FF(m)o(ust)19 +b(b)q(e)i(a)e(hash)h(table)g(con)o(taining)g(an)g(en)o(try)f(for)h +FD(key)s FF(.)34 b Fw(Hash-table-remove!)17 b FF(deletes)k(the)37 +979 y(en)o(try)15 b(for)g FD(key)k FF(in)d FD(hash)t +FF(,)f(if)g(it)h(exists.)k(Result)c(of)f Fw(Hash-table-remove!)j +FF(is)d(unsp)q(eci\014ed.)125 1078 y Fv(\(define)20 b(h)i +(\(make-hash-tabl)o(e\)\))125 1127 y(\(hash-table-put!)c(h)k('foo)f +(\(list)f(1)i(2)g(3\)\))125 1177 y(\(hash-table-get)c(h)k('foo\))343 +1227 y Fu(=)-7 b Fp(\))21 b Fv(\(1)h(2)f(3\))125 1277 +y(\(hash-table-remo)o(ve!)e(h)i('foo\))125 1327 y(\(hash-table-get)d(h) +k('foo)f('absent\))343 1377 y Fu(=)-7 b Fp(\))21 b Fv(absent)37 +1592 y Fw(\(hash-table-for-each)h FD(hash)i(pr)n(o)n(c)s +Fw(\))919 b FF(pro)q(cedure)37 1672 y FD(Pr)n(o)n(c)19 +b FF(m)o(ust)d(b)q(e)i(a)e(pro)q(cedure)i(taking)f(t)o(w)o(o)e(argumen) +o(ts.)24 b Fw(Hash-table-for-each)14 b FF(calls)k FD(pr)n(o)n(c)h +FF(on)e(eac)o(h)37 1729 y(k)o(ey/v)m(alue)e(asso)q(ciation)e(in)h +FD(hash)t FF(,)f(with)h(the)f(k)o(ey)g(as)g(the)g(\014rst)g(argumen)o +(t)g(and)g(the)g(v)m(alue)i(as)e(the)g(second.)37 1785 +y(The)j(v)m(alue)g(returned)g(b)o(y)f Fw(hash-table-for-each)e +FF(is)i(unde\014ned.)37 1870 y Fn(Note:)37 b Fu(The)14 +b(order)h(of)e(application)g(of)g Fn(pr)n(o)n(c)j Fu(is)e(unsp)q +(eci\014ed.)125 1957 y Fv(\(let)21 b(\(\(h)64 b(\(make-hash-table\)\)) +255 2007 y(\(sum)21 b(0\)\))168 2057 y(\(hash-table-put!)e(h)i('foo)g +(2\))168 2107 y(\(hash-table-put!)e(h)i('bar)g(3\))168 +2156 y(\(hash-table-for-eac)o(h)e(h)i(\(lambda)g(\(key)g(value\))713 +2206 y(\(set!)g(sum)g(\(+)g(sum)h(value\)\)\)\))168 2256 +y(sum\))343 2306 y Fu(=)-7 b Fp(\))21 b Fv(5)37 2509 +y Fw(\(hash-table-map)h FD(hash)i(pr)n(o)n(c)s Fw(\))1039 +b FF(pro)q(cedure)37 2589 y FD(Pr)n(o)n(c)19 b FF(m)o(ust)d(b)q(e)i(a)e +(pro)q(cedure)i(taking)e(t)o(w)o(o)g(argumen)o(ts.)23 +b Fw(Hash-table-map)15 b FF(calls)j FD(pr)n(o)n(c)h FF(on)e(eac)o(h)f +(en)o(try)37 2646 y(in)h FD(hash)t FF(,)e(with)h(the)g(en)o(try's)f(k)o +(ey)h(as)f(the)h(\014rst)f(argumen)o(t)g(and)h(the)g(en)o(try's)f(v)m +(alue)i(as)e(the)h(second.)22 b(The)37 2702 y(result)16 +b(of)f Fw(hash-table-map)e FF(is)j(a)f(list)h(of)f(the)g(v)m(alues)h +(returned)g(b)o(y)f FD(pr)n(o)n(c)r FF(,)g(in)h(unsp)q(eci\014ed)i +(order.)37 2787 y Fn(Note:)37 b Fu(The)14 b(order)h(of)e(application)g +(of)g Fn(pr)n(o)n(c)j Fu(is)e(unsp)q(eci\014ed.)p eop +%%Page: 44 44 +44 43 bop 37 45 a FE(44)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 125 190 a Fv(\(let)k(\(\(h)g(\(make-hash-table)o(\)\)\)) +168 240 y(\(dotimes)f(\(i)i(5\))212 290 y(\(hash-table-put!)c(h)k(i)f +(\(number->string)e(i\)\)\))168 340 y(\(hash-table-map)g(h)j(\(lambda)e +(\(key)h(value\))626 390 y(\(cons)g(key)g(value\)\)\)\))343 +439 y Fu(=)-7 b Fp(\))21 b Fv(\(\(0)g(.)h("0"\))f(\(3)g(.)h("3"\))f +(\(2)g(.)h("2"\))f(\(1)g(.)h("1"\))f(\(4)g(.)h("4"\)\))37 +633 y Fw(\(hash-table->list)g FD(hash)s Fw(\))1097 b +FF(pro)q(cedure)37 707 y Fw(hash-table->list)16 b FF(returns)h(an)h +(\\asso)q(ciation)f(list")i(built)f(from)f(the)h(en)o(tries)g(in)g +FD(hash)t FF(.)27 b(Eac)o(h)17 b(en)o(try)37 756 y(in)g +FD(hash)i FF(will)e(b)q(e)f(represen)o(ted)g(as)f(a)g(pair)g(whose)h +FD(c)n(ar)k FF(is)c(the)f(en)o(try's)g(k)o(ey)g(and)g(whose)h +FD(c)n(dr)k FF(is)c(its)f(v)m(alue.)37 806 y Fn(Note:)37 +b Fu(The)14 b(order)h(of)e(pairs)h(in)g(the)g(resulting)g(list)f(is)h +(unsp)q(eci\014ed.)125 889 y Fv(\(let)21 b(\(\(h)g(\(make-hash-table)o +(\)\)\))168 938 y(\(dotimes)f(\(i)i(5\))212 988 y(\(hash-table-put!)c +(h)k(i)f(\(number->string)e(i\)\)\))168 1038 y(\(hash-table->list)g +(h\)\))343 1088 y Fu(=)-7 b Fp(\))21 b Fv(\(\(0)g(.)h("0"\))f(\(3)g(.)h +("3"\))f(\(2)g(.)h("2"\))f(\(1)g(.)h("1"\))f(\(4)g(.)h("4"\)\))37 +1282 y Fw(\(hash-table-stats)g FD(hash)s Fw(\))1097 b +FF(pro)q(cedure)37 1362 y Fw(Hash-table-stats)12 b FF(returns)i(a)g +(string)f(with)i(o)o(v)o(erall)f(information)g(ab)q(out)f +FD(hash)t FF(,)h(suc)o(h)g(as)g(the)g(n)o(um)o(b)q(er)37 +1418 y(of)21 b(en)o(tries)g(it)h(con)o(tains,)g(the)f(n)o(um)o(b)q(er)g +(of)g(buc)o(k)o(ets)g(in)h(its)f(hash)g(arra)o(y)l(,)g(and)g(the)g +(utilization)i(of)e(the)37 1475 y(buc)o(k)o(ets.)37 1591 +y FI(6.20)56 b(Regular)18 b(expressions)37 1677 y FF(Regular)j +(expressions)f(are)f(\014rst)g(class)h(ob)s(jects)e(in)i +FB(STk)p FF(.)32 b(A)20 b(regular)f(expression)h(is)g(created)g(b)o(y)f +(the)37 1733 y Fw(string->regexp)e FF(pro)q(cedure.)29 +b(Matc)o(hing)18 b(a)g(regular)g(expression)h(against)f(a)g(string)g +(is)g(simply)i(done)37 1790 y(b)o(y)f(applying)g(a)f(previously)i +(created)e(regular)g(expression)h(to)f(this)g(string.)29 +b(Regular)19 b(expressions)g(are)37 1846 y(implemen)o(ted)24 +b(using)e(co)q(de)g(in)h(the)f(Henry)g(Sp)q(encer's)g(pac)o(k)m(age,)h +(and)f(m)o(uc)o(h)f(of)h(the)f(description)i(of)37 1903 +y(regular)16 b(expressions)g(b)q(elo)o(w)g(is)f(copied)i(from)d(his)i +(man)o(ual.)37 2018 y Fw(\(string->regexp)22 b FD(string)t +Fw(\))1118 b FF(pro)q(cedure)37 2098 y Fw(String->regexp)14 +b FF(compiles)i(the)g FD(string)i FF(and)d(returns)h(the)f(corresp)q +(onding)h(regular)f(expression.)37 2166 y(Matc)o(hing)10 +b(a)g(regular)h(expression)g(against)e(a)h(string)g(is)h(done)f(b)o(y)h +(applying)g(the)f(result)h(of)f Fw(string->regexp)37 +2223 y FF(to)k(this)h(string.)k(This)c(application)h(yields)g(a)e(list) +h(of)f(in)o(teger)h(couples)g(if)g(a)f(matc)o(hing)g(o)q(ccurs;)h(it)f +(returns)37 2279 y Fw(#f)19 b FF(otherwise.)32 b(Those)19 +b(in)o(tegers)g(corresp)q(ond)h(to)e(indexes)j(in)f(the)f(string)g +(whic)o(h)h(matc)o(h)f(the)g(regular)37 2336 y(expression.)37 +2392 y(A)f(regular)g(expression)g(is)g(zero)g(or)f(more)g +FD(br)n(anches)p FF(,)f(separated)i(b)o(y)f(\\)p Fw(|)p +FF(".)26 b(It)18 b(matc)o(hes)f(an)o(ything)h(that)37 +2449 y(matc)o(hes)d(one)h(of)e(the)i(branc)o(hes.)37 +2505 y(A)g(branc)o(h)h(is)f(zero)g(or)f(more)h FD(pie)n(c)n(es)p +FF(,)e(concatenated.)23 b(It)16 b(matc)o(hes)f(a)h(matc)o(h)f(for)g +(the)h(\014rst,)g(follo)o(w)o(ed)g(b)o(y)37 2562 y(a)f(matc)o(h)g(for)g +(the)g(second,)g(etc.)37 2618 y(A)h(piece)i(is)e(an)g +FD(atom)g FF(p)q(ossibly)i(follo)o(w)o(ed)e(b)o(y)f(\\)p +Fw(*)p FF(",)g(\\)p Fw(+)p FF(",)g(or)h(\\)p Fw(?)p FF(".)21 +b(An)16 b(atom)e(follo)o(w)o(ed)j(b)o(y)e(\\)p Fw(*)p +FF(")g(matc)o(hes)37 2674 y(a)h(sequence)h(of)e(0)h(or)f(more)h(matc)o +(hes)f(of)g(the)h(atom.)21 b(An)16 b(atom)f(follo)o(w)o(ed)h(b)o(y)g +(\\)p Fw(+)p FF(")f(matc)o(hes)g(a)h(sequence)37 2731 +y(of)g(1)g(or)g(more)g(matc)o(hes)g(of)g(the)g(atom.)23 +b(An)16 b(atom)g(follo)o(w)o(ed)g(b)o(y)g(\\)p Fw(?)p +FF(")23 b(matc)o(hes)16 b(a)g(matc)o(h)g(of)g(the)g(atom,)37 +2787 y(or)f(the)g(n)o(ull)i(string.)p eop +%%Page: 45 45 +45 44 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(45)p 37 64 1838 2 v 37 190 a FF(An)13 b(atom)f(is)h(a)g(regular)f +(expression)i(in)g(paren)o(theses)e(\(matc)o(hing)h(a)f(matc)o(h)g(for) +g(the)h(regular)g(expression\),)37 247 y(a)g FD(r)n(ange)f +FF(\(see)g(b)q(elo)o(w\),)h(\\)p Fw(.)p FF(")19 b(\(matc)o(hing)12 +b(an)o(y)h(single)h(c)o(haracter\),)d(\\)p Fw(^)p FF(")h(\(matc)o(hing) +h(the)f(n)o(ull)i(string)f(at)f(the)37 303 y(b)q(eginning)18 +b(of)d(the)h(input)g(string\),)f(\\)p Fw($)p FF(")g(\(matc)o(hing)g +(the)h(n)o(ull)h(string)f(at)f(the)g(end)h(of)f(the)h(input)h +(string\),)37 360 y(a)e(\\)p Fw(\\)p FF(")g(follo)o(w)o(ed)g(b)o(y)h(a) +e(single)j(c)o(haracter)e(\(matc)o(hing)f(that)h(c)o(haracter\),)f(or)h +(a)f(single)j(c)o(haracter)d(with)i(no)37 416 y(other)f(signi\014cance) +i(\(matc)o(hing)e(that)g(c)o(haracter\).)37 473 y(A)e +FD(r)n(ange)e FF(is)i(a)e(sequence)j(of)d(c)o(haracters)h(enclosed)h +(in)g(\\)p Fw([])p FF(".)18 b(It)12 b(normally)h(matc)o(hes)f(an)o(y)f +(single)j(c)o(haracter)37 529 y(from)g(the)h(sequence.)21 +b(If)14 b(the)h(sequence)g(b)q(egins)h(with)f(\\)p Fw(^)p +FF(",)e(it)i(matc)o(hes)f(an)o(y)g(single)i(c)o(haracter)d +FD(not)i FF(from)37 586 y(the)22 b(rest)e(of)h(the)g(sequence.)39 +b(If)21 b(t)o(w)o(o)f(c)o(haracters)g(in)i(the)f(sequence)h(are)f +(separated)g(b)o(y)g(\\)p Fw(-)p FF(",)g(this)g(is)37 +642 y(shorthand)g(for)f(the)h(full)i(list)e(of)g(ASCI)q(I)h(c)o +(haracters)e(b)q(et)o(w)o(een)h(them)g(\(e.g.)36 b(\\)p +Fw([0-9])p FF(")20 b(matc)o(hes)g(an)o(y)37 699 y(decimal)d(digit\).)j +(T)l(o)14 b(include)j(a)d(literal)i(\\)p Fw(])p FF(")e(in)h(the)g +(sequence,)g(mak)o(e)f(it)h(the)g(\014rst)f(c)o(haracter)g(\(follo)o +(wing)37 755 y(a)h(p)q(ossible)i(\\)p Fw(^)p FF("\).)i(T)l(o)c(include) +j(a)d(literal)h(\\)p Fw(-)p FF(",)e(mak)o(e)h(it)g(the)g(\014rst)g(or)g +(last)g(c)o(haracter.)37 811 y(In)g(general)g(there)f(ma)o(y)f(b)q(e)i +(more)f(than)g(one)g(w)o(a)o(y)f(to)g(matc)o(h)h(a)g(regular)g +(expression)h(to)e(an)h(input)h(string.)37 868 y(Considering)e(only)f +(the)g(rules)g(giv)o(en)g(so)f(far)g(could)h(lead)g(to)f(am)o +(biguities.)20 b(T)l(o)11 b(resolv)o(e)h(those)f(am)o(biguities,)37 +924 y(the)g(generated)f(regular)h(expression)g(c)o(ho)q(oses)f(among)g +(alternativ)o(es)g(using)h(the)g(rule)g(\\\014rst)f(then)h(longest".)37 +981 y(In)j(other)e(w)o(ords,)g(it)h(considers)g(the)g(p)q(ossible)h +(matc)o(hes)f(in)g(order)f(w)o(orking)h(from)f(left)h(to)f(righ)o(t)g +(across)g(the)37 1037 y(input)i(string)e(and)h(the)g(pattern,)f(and)h +(it)f(attempts)g(to)g(matc)o(h)f(longer)i(pieces)h(of)e(the)h(input)g +(string)g(b)q(efore)37 1094 y(shorter)i(ones.)20 b(More)15 +b(sp)q(eci\014cally)l(,)i(the)f(follo)o(wing)g(rules)g(apply)g(in)g +(decreasing)g(order)f(of)f(priorit)o(y:)93 1173 y(1.)22 +b(If)c(a)g(regular)g(expression)h(could)g(matc)o(h)e(t)o(w)o(o)g +(di\013eren)o(t)h(parts)f(of)h(an)g(input)h(string)f(then)g(it)g(will) +151 1229 y(matc)o(h)d(the)g(one)g(that)g(b)q(egins)h(earliest.)93 +1317 y(2.)22 b(If)12 b(a)f(regular)h(expression)g(con)o(tains)g(\\)p +Fw(|)p FF(")f(op)q(erators)f(then)i(the)g(leftmost)f(matc)o(hing)g +(sub-expression)151 1374 y(is)16 b(c)o(hosen.)93 1462 +y(3.)22 b(In)e(\\)p Fw(*)p FF(",)g(\\)p Fw(+)p FF(",)f(and)h(\\)p +Fw(?)p FF(")32 b(constructs,)20 b(longer)f(matc)o(hes)g(are)g(c)o +(hosen)h(in)g(preference)h(to)e(shorter)151 1518 y(ones.)93 +1606 y(4.)j(In)13 b(sequences)g(of)f(expression)h(comp)q(onen)o(ts)f +(the)g(comp)q(onen)o(ts)g(are)g(considered)h(from)f(left)g(to)g(righ)o +(t.)125 1688 y Fv(\(define)20 b(r1)h(\(string->regexp)e("abc"\)\))125 +1738 y(\(r1)i("xyz"\))391 b Fu(=)-7 b Fp(\))22 b Fv(#f)125 +1788 y(\(r1)f("12abc345"\))281 b Fu(=)-7 b Fp(\))22 b +Fv(\(\(2)f(5\)\))125 1837 y(\(define)f(r2)h(\(string->regexp)e +("[a-z]+"\)\))125 1887 y(\(r2)i("12abc345"\))281 b Fu(=)-7 +b Fp(\))22 b Fv(\(\(2)f(5\)\))37 2026 y FF(If)16 b(the)f(regular)g +(expression)g(con)o(tains)g(paren)o(thesis,)g(and)g(if)h(there)f(is)g +(a)g(matc)o(h,)f(the)g(result)i(returned)f(b)o(y)37 2082 +y(the)f(application)i(will)f(con)o(tain)f(sev)o(eral)g(couples)g(of)g +(in)o(tegers.)19 b(First)13 b(couple)i(will)h(b)q(e)e(the)g(indexes)h +(of)e(the)37 2139 y(\014rst)18 b(longest)f(substring)h(whic)o(h)g(matc) +o(h)f(the)h(regular)f(expression.)28 b(Subsequen)o(t)18 +b(couples,)h(will)g(b)q(e)f(the)37 2195 y(indexes)f(of)e(all)h(the)f +(sub-parts)g(of)g(this)h(regular)f(expression,)h(in)g(sequence.)125 +2277 y Fv(\(define)k(r3)h(\(string->regexp)e("\(a*\)\(b*\)c"\)\))125 +2327 y(\(r3)i("abc"\))391 b Fu(=)-7 b Fp(\))22 b Fv(\(\(0)f(3\))g(\(0)g +(1\))h(\(1)f(2\)\))125 2377 y(\(r3)g("c"\))435 b Fu(=)-7 +b Fp(\))22 b Fv(\(\(0)f(1\))g(\(0)g(0\))h(\(0)f(0\)\))125 +2427 y(\(\(string->regexp)d("\([a-z]+\),\([a-z]+\))o("\))h +("XXabcd,eXX"\))735 2476 y Fu(=)-7 b Fp(\))22 b Fv(\(\(2)f(8\))g(\(2)g +(6\))h(\(7)f(8\)\))37 2707 y Fw(\(regexp?)i FD(obj)7 +b Fw(\))1338 b FF(pro)q(cedure)37 2787 y(Returns)16 b +Fw(#t)f FF(if)h FD(obj)22 b FF(is)15 b(a)g(regular)g(expression)i +(created)e(b)o(y)g Fw(string->regexp)p FF(;)e(otherwise)i(returns)g +Fw(#f)p FF(.)p eop +%%Page: 46 46 +46 45 bop 37 45 a FE(46)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 125 190 a Fv(\(regexp?)j(\(string->regexp)e +("[a-zA-Z][a-zA-Z0-9])o(*"\)\))735 240 y Fu(=)-7 b Fp(\))43 +b Fv(#t)37 466 y Fw(\(regexp-replace)22 b FD(p)n(attern)i(string)f +(substitution)s Fw(\))703 b FF(pro)q(cedure)37 523 y +Fw(\(regexp-replace-all)22 b FD(p)n(attern)i(string)f(substitution)s +Fw(\))607 b FF(pro)q(cedure)37 597 y Fw(Regexp-replace)15 +b FF(matc)o(hes)h(the)g(regular)g(expression)h FD(p)n(attern)j +FF(against)c FD(string)s FF(.)23 b(If)17 b(there)f(is)h(a)f(matc)o(h,) +37 647 y(the)i(p)q(ortion)f(of)g FD(string)k FF(whic)o(h)d(matc)o(h)f +FD(p)n(attern)j FF(is)e(replaced)g(b)o(y)g(the)f FD(substitution)k +FF(string.)26 b(If)17 b(there)g(is)37 697 y(no)f(matc)o(h,)e +Fw(regexp-replace)f FF(returns)i FD(string)k FF(unmo)q(di\014ed.)i +(Note)15 b(that)g(the)g(giv)o(en)h FD(p)n(attern)i FF(could)e(b)q(e)37 +747 y(here)d(either)g(a)f(string)g(or)g(a)f(regular)i(expression.)19 +b(If)13 b FD(p)n(attern)i FF(con)o(tains)e(strings)f(of)g(the)g(form)f +(\\)p Fw(\\n)p FF(",)h(where)37 810 y FD(n)j FF(is)g(a)f(digit)h(b)q +(et)o(w)o(een)g(1)g(and)f(9,)g(then)h(it)g(is)g(replaced)h(in)f(the)g +(substitution)g(with)g(the)g(p)q(ortion)g(of)f(string)37 +859 y(that)j(matc)o(hed)h(the)g FD(n)p FF(-th)f(paren)o(thesized)i(sub) +q(expression)g(of)e FD(p)n(attern)p FF(.)27 b(If)18 b +FD(n)f FF(is)h(equal)g(to)f(0,)h(then)g(it)f(is)37 909 +y(replaced)g(in)f FD(substitution)i FF(with)e(the)f(p)q(ortion)h(of)e +FD(string)19 b FF(that)14 b(matc)o(hed)h FD(p)n(attern)t +FF(.)125 1000 y Fv(\(regexp-replace)j("a*b")j("aaabbcccc")f("X"\))735 +1050 y Fu(=)-7 b Fp(\))22 b Fv("Xbcccc")125 1100 y(\(regexp-replace)c +(\(string->regexp)h("a*b"\))i("aaabbcccc")e("X"\))735 +1150 y Fu(=)-7 b Fp(\))22 b Fv("Xbcccc")125 1200 y(\(regexp-replace)c +("\(a*\)b")j("aaabbcccc")e("X\\\\1Y"\))735 1249 y Fu(=)-7 +b Fp(\))22 b Fv("XaaaYbcccc")125 1299 y(\(regexp-replace)c("\(a*\)b")j +("aaabbcccc")e("X\\\\0Y"\))735 1349 y Fu(=)-7 b Fp(\))22 +b Fv("XaaabYbcccc")125 1399 y(\(regexp-replace)c("\([a-z]*\))i +(\([a-z]*\)")g("john)h(brown")g("\\\\2)f(\\\\1"\))735 +1449 y Fu(=)-7 b Fp(\))22 b Fv("brown)e(john")37 1595 +y Fw(Regexp-replace)9 b FF(replaces)j(the)f(\014rst)g(o)q(ccurence)h +(of)f FD(p)n(attern)j FF(in)e FD(string)s FF(.)18 b(T)l(o)11 +b(replace)h FD(al)r(l)f FF(the)g(o)q(ccurences)37 1652 +y(of)k(the)h FD(p)n(attern)p FF(,)e(use)i Fw(regexp-replace-all)125 +1756 y Fv(\(regexp-replace)i("a*b")j("aaabbcccc")f("X"\))735 +1806 y Fu(=)-7 b Fp(\))22 b Fv("Xbcccc")125 1856 y(\(regexp-replace-)o +(all)d("a*b")h("aaabbcccc")g("X"\))735 1906 y Fu(=)-7 +b Fp(\))22 b Fv("XXcccc")37 2138 y FI(6.21)56 b(P)n(attern)19 +b(matc)n(hing)37 2225 y FF(P)o(attern)e(matc)o(hing)h(is)g(a)f(k)o(ey)g +(feature)h(of)f(most)g(mo)q(dern)g(functional)i(programming)e +(languages)h(since)37 2282 y(it)h(allo)o(ws)f(clean)h(and)f(secure)g +(co)q(de)h(to)e(b)q(e)i(written.)28 b(In)o(ternally)l(,)20 +b(\\pattern-matc)o(hing)d(forms")g(should)37 2338 y(b)q(e)g(translated) +f(\(compiled\))h(in)o(to)f(cascades)g(of)g(\\elemen)o(tary)g(tests")f +(where)h(co)q(de)h(is)g(made)f(as)f(e\016cien)o(t)37 +2395 y(as)i(p)q(ossible,)h(a)o(v)o(oiding)g(redundan)o(t)f(tests;)f +(the)h FB(STk)f FF(\\pattern)g(matc)o(hing)h(compiler")h(pro)o(vides)f +(this)1842 2378 y FA(7)1862 2395 y FF(.)37 2451 y(The)h(tec)o(hnique)h +(used)e(is)h(describ)q(ed)h(in)g(details)f(in)g([9)o(],)f(and)h(the)f +(co)q(de)h(generated)f(can)h(b)q(e)g(considered)37 2508 +y(optimal)e(due)g(to)f(the)g(w)o(a)o(y)f(this)i(\\pattern)e(compiler")i +(w)o(as)f(obtained.)37 2565 y(The)h(\\pattern)e(language")i(allo)o(ws)f +(the)g(expression)h(of)f(a)g(wide)h(v)m(ariet)o(y)f(of)g(patterns,)f +(including:)p 37 2608 735 2 v 89 2634 a Ft(7)107 2650 +y Fs(The)k(\\pattern)h(matc)o(hing)g(compiler")i(has)d(b)q(een)h +(written)g(b)o(y)f(Jean-Marie)i(Ge\013ro)o(y)f(and)g(is)f(part)h(of)f +(the)g(Man)o(uel)37 2696 y(Serrano's)g(Biglo)q(o)g(compiler[8)r(])e +(since)h(sev)o(eral)g(y)o(ears.)28 b(The)16 b(co)q(de)h(\(and)g(do)q +(cumen)o(tation\))h(included)h(in)e Fh(STk)f Fs(has)h(b)q(een)37 +2742 y(stolen)i(from)e(the)g(Biglo)q(o)i(pac)o(k)n(age)f(v1.9)f(\(the)g +(only)i(di\013erence)g(b)q(et)o(w)o(een)e(b)q(oth)h(pac)o(k)n(age)g(is) +g(the)f(pattern)h(matc)o(hing)g(of)37 2787 y(structures)c(whisc)o(h)g +(is)g(absen)o(t)g(in)f Fh(STk)p Fs(\).)p eop +%%Page: 47 47 +47 46 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(47)p 37 64 1838 2 v 106 190 a Fo(\017)22 b FF(Non-linear)15 +b(patterns:)j(pattern)12 b(v)m(ariables)j(can)e(app)q(ear)g(more)g +(than)g(once,)g(allo)o(wing)h(comparison)151 247 y(of)h(subparts)g(of)g +(the)g(datum)g(\(through)f Fw(eq?)p FF(\))106 353 y Fo(\017)22 +b FF(Recursiv)o(e)e(patterns)e(on)g(lists:)27 b(for)18 +b(example,)h(c)o(hec)o(king)h(that)d(the)i(datum)f(is)h(a)f(list)h(of)f +(zero)g(or)151 409 y(more)d Fw(a)p FF(s)g(follo)o(w)o(ed)g(b)o(y)g +(zero)h(or)e(more)h Fw(b)p FF(s.)106 515 y Fo(\017)22 +b FF(P)o(attern)14 b(matc)o(hing)i(on)f(lists)h(as)e(w)o(ell)j(as)d(on) +i(v)o(ectors.)37 653 y FE(P)o(attern)i(Matc)o(hing)g(F)l(acilities)37 +745 y FF(Only)f(t)o(w)o(o)d(sp)q(ecial)j(forms)e(are)g(pro)o(vided)h +(for)f(this:)21 b Fw(match-case)14 b FF(and)h Fw(match-lambda)f +FF(and)h(these)h(also)37 801 y(exist,)g(for)e(example,)i(in)g(Andrew)g +(W)l(righ)o(t)e(and)i(Bruce)g(Duba's)e([10)o(])h(pattern)g(matc)o(hing) +g(pac)o(k)m(age.)37 929 y Fw(\(match-case)23 b Fo(h)p +FF(k)o(ey)p Fo(i)g(h)p FF(clause)586 936 y FA(1)606 929 +y Fo(i)h(h)p FF(clause)784 936 y FA(2)804 929 y Fo(i)p +Fz(:)8 b(:)g(:)d Fw(\))839 b FF(syn)o(tax)37 1005 y(In)16 +b(this)g(form,)e Fo(h)p FF(k)o(ey)p Fo(i)g FF(ma)o(y)h(b)q(e)h(an)o(y)f +(expression)h(and)f(eac)o(h)g Fo(h)p FF(clause)p Fo(i)h +FF(has)f(the)g(form)125 1108 y Fv(\()p Fl(<)p Fv(pat)p +Fl(>)21 b(<)p Fv(expression)550 1114 y Fm(1)567 1108 +y Fl(>)h(<)p Fv(expression)873 1114 y Fm(2)890 1108 y +Fl(>)g Fv(...\))37 1263 y FF(A)16 b Fw(match-case)e FF(expression)j(is) +f(ev)m(aluated)h(as)e(follo)o(ws.)21 b Fz(<)p FF(k)o(ey)p +Fz(>)16 b FF(is)h(ev)m(aluated)f(and)g(the)g(result)g(is)g(com-)37 +1320 y(pared)i(with)g(eac)o(h)f(successiv)o(e)i(patterns.)26 +b(If)18 b(the)f(pattern)g(in)h(some)f Fz(<)p FF(clause)p +Fz(>)i FF(yields)g(a)f(matc)o(h,)f(then)37 1376 y(the)c(expressions)h +(in)f(that)f Fz(<)p FF(clause)p Fz(>)i FF(are)f(ev)m(aluated)h(from)d +(left)i(to)f(righ)o(t)h(in)g(an)g(en)o(vironmen)o(t)g(where)g(the)37 +1433 y(pattern)g(v)m(ariables)h(are)f(b)q(ound)g(to)g(the)g(corresp)q +(onding)g(subparts)g(of)g(the)f(datum,)h(and)g(the)g(result)g(of)g(the) +37 1489 y(last)h(expression)g(in)g(that)e Fz(<)p FF(clause)p +Fz(>)j FF(is)f(returned)f(as)g(the)g(result)h(of)f(the)g +Fw(match-case)f FF(expression.)20 b(If)13 b(no)37 1546 +y Fz(<)p FF(pat)p Fz(>)j FF(in)h(an)o(y)e Fz(<)p FF(clause)p +Fz(>)i FF(matc)o(hes)e(the)h(datum,)f(then,)h(if)g(there)g(is)g(an)f +Fw(else)g FF(clause,)h(its)g(expressions)37 1602 y(are)k(ev)m(aluated)h +(and)f(the)g(result)g(of)f(the)h(last)g(is)g(the)g(result)g(of)g(the)g +(whole)g Fw(match-case)e FF(expression;)37 1659 y(otherwise)e(the)f +(result)h(of)f(the)g Fw(match-case)f FF(expression)i(is)f(unsp)q +(eci\014ed.)37 1718 y(The)h(equalit)o(y)g(predicate)g(used)g(is)g +Fw(eq?)p FF(.)125 1836 y Fv(\(match-case)j('\(a)i(b)h(a\))168 +1886 y(\(\(?x)f(?x\))g('foo\))168 1936 y(\(\(?x)g(?-)h(?x\))f('bar\)\)) +343 1985 y Fu(=)-7 b Fp(\))21 b Fv(bar)37 2239 y Fw(\(match-lambda)i +Fo(h)p FF(clause)508 2246 y FA(1)528 2239 y Fo(i)g(h)p +FF(clause)705 2246 y FA(2)726 2239 y Fo(i)o Fz(:)8 b(:)g(:)e +Fw(\))917 b FF(syn)o(tax)37 2322 y(The)12 b(form)f Fw(match-lambda)p +FF(expands)f(in)o(to)h(a)g(lam)o(b)q(da-expression)i(exp)q(ecting)f(an) +g(argumen)o(t)e(whic)o(h,)j(once)37 2379 y(applied)18 +b(to)c(an)h(expression,)h(b)q(eha)o(v)o(es)f(exactly)h(lik)o(e)g(a)f +Fw(match-case)f FF(expression.)125 2497 y Fv(\(\(match-lambda)212 +2547 y(\(\(?x)21 b(?x\))g('foo\))212 2596 y(\(\(?x)g(?-)g(?x\))g +('bar\)\))g('bar\))343 2646 y Fu(=)-7 b Fp(\))21 b Fv(bar)p +eop +%%Page: 48 48 +48 47 bop 37 45 a FE(48)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 62 180 a Fl(<)p Fn(p)n(attern)p Fl(>)f +Fp(\000)-7 b(!)333 b Fn(Matches:)62 229 y Fl(<)p Fu(atom)p +Fl(>)13 b Fp(k)h Fv(\(kwote)42 b Fl(<)p Fu(atom)p Fl(>)p +Fv(\))48 b Fu(an)o(y)14 b(expression)h Fv(eq?)j Fu(to)13 +b Fl(<)p Fu(atom)p Fl(>)62 279 y Fp(k)h Fv(\(and)f Fl(<)p +Fu(pat)290 285 y Fm(1)320 279 y Fl(>)i Fu(.)6 b(.)g(.)h +Fl(<)p Fu(pat)514 285 y Fg(n)548 279 y Fl(>)p Fv(\))68 +b Fu(if)13 b(all)g(of)g Fl(<)p Fu(pat)905 285 y Fg(i)931 +279 y Fl(>)h Fu(matc)o(h)62 329 y Fp(k)g Fv(\(or)f Fl(<)p +Fu(pat)p Fl(>)i Fu(.)6 b(.)g(.)h Fl(<)p Fu(pat)462 335 +y Fg(n)496 329 y Fl(>)p Fv(\))120 b Fu(if)13 b(an)o(y)h(of)f +Fl(<)p Fu(pat)926 335 y Fm(1)957 329 y Fl(>)h Fu(through)g +Fl(<)p Fu(pat)1252 335 y Fg(n)1286 329 y Fl(>)p Fu(matc)o(h)62 +379 y Fp(k)g Fv(\(not)f Fl(<)p Fu(pat)p Fl(>)p Fv(\))326 +b Fu(if)13 b Fl(<)p Fu(pat)p Fl(>)i Fu(do)q(esn't)f(matc)o(h)62 +429 y Fp(k)g Fv(\(?)k Fl(<)p Fu(predicate)p Fl(>)p Fv(\))260 +b Fu(if)13 b Fl(<)p Fu(predicate)p Fl(>)j Fu(is)e(true)62 +479 y Fp(k)g Fv(\()p Fl(<)p Fv(pat)217 485 y Fm(1)247 +479 y Fl(>)22 b Fv(...)367 463 y Fm(8)428 479 y Fl(<)p +Fv(pat)526 485 y Fg(n)560 479 y Fl(>)p Fv(\))56 b Fu(a)14 +b(list)f(of)h Fl(n)f Fu(elemen)o(ts)62 528 y Fp(k)h Fl(<)p +Fu(pat)p Fl(>)g Fv(...)p 235 535 66 2 v 315 513 a Fm(9)670 +528 y Fu(a)g(\(p)q(ossibly)g(empt)o(y\))f(rep)q(etition)h(of)f +Fl(<)p Fu(pat)p Fl(>)i Fu(in)e(a)h(list.)62 578 y Fp(k)g +Fv(#\()p Fl(<)p Fv(pat)p Fl(>)21 b Fv(...)p Fl(<)p Fv(pat)456 +584 y Fg(n)490 578 y Fl(>)p Fv(\))126 b Fu(a)14 b(v)o(ector)h(of)e(n)h +(elemen)o(ts)62 628 y Fp(k)g Fv(?)p Fl(<)p Fu(iden)o(ti\014er)p +Fl(>)327 b Fu(an)o(ything,)13 b(and)h(binds)g Fl(identif)t(ier)i +Fu(as)e(a)g(v)n(ariable)62 678 y Fp(k)g Fv(?-)529 b Fu(an)o(ything)62 +728 y Fp(k)14 b Fv(??-)507 b Fu(an)o(y)14 b(\(p)q(ossibly)g(empt)o(y\)) +f(rep)q(etition)h(of)f(an)o(ything)g(in)h(a)f(list)62 +777 y Fp(k)h Fv(???-)485 b Fu(an)o(y)14 b(end)g(of)g(list)714 +870 y FF(T)l(able)i(3:)k(P)o(attern)14 b(Syn)o(tax)p +40 926 14 2 v 54 926 1805 2 v 1862 926 14 2 v 37 1042 +a FE(The)k(pattern)g(language)37 1128 y FF(The)e(syn)o(tax)e(is)h +(presen)o(ted)g(in)h(T)l(able)g(3.)j(It)c(is)g(describ)q(ed)i(b)q(elo)o +(w)e(in)h(the)f(same)f(w)o(a)o(y)g(\(and)h(nearly)g(in)h(the)37 +1185 y(same)f(w)o(ords\))f(as)h(in)h([10)o(].)37 1241 +y Fn(Note:)35 b Fv(and,)21 b(or,)g(not,)g(check)11 b +Fu(and)h Fv(kwote)f Fu(m)o(ust)g(b)q(e)h(quoted)g(in)g(order)g(to)g(b)q +(e)h(treated)g(as)f(literals.)17 b(This)12 b(is)f(the)37 +1298 y(only)i(justi\014cation)f(for)h(ha)o(ving)f(the)h +Fv(kwote)f Fu(pattern)i(since,)g(b)o(y)e(con)o(v)o(en)o(tion,)h(an)o(y) +f(atom)g(whic)o(h)g(is)h(not)g(a)g(k)o(eyw)o(ord)37 1354 +y(is)h(quoted.)37 1471 y FE(Explanations)20 b(through)e(examples)106 +1550 y Fo(\017)k Fw(?-)15 b FF(matc)o(hes)g(an)o(y)g(s-expr)106 +1637 y Fo(\017)22 b Fw(a)15 b FF(matc)o(hes)g(the)g(atom)f +Fw('a)p FF(.)106 1725 y Fo(\017)22 b Fw(?a)15 b FF(matc)o(hes)g(an)o(y) +g(expression,)g(and)h(binds)g(the)f(v)m(ariable)i Fw(a)e +FF(to)g(this)g(expression.)106 1813 y Fo(\017)22 b Fw(\(?)48 +b(integer?\))19 b FF(matc)o(hes)14 b(an)o(y)h(in)o(teger)106 +1900 y Fo(\017)22 b Fw(\(a)i(\(a)f(b\)\))15 b FF(matc)o(hes)g(the)g +(only)h(list)g Fw('\(a)23 b(\(a)h(b\)\))p FF(.)106 1988 +y Fo(\017)e Fw(???-)14 b FF(can)g(only)h(app)q(ear)f(at)g(the)g(end)h +(of)f(a)f(list,)i(and)g(alw)o(a)o(ys)e(succeeds.)21 b(F)l(or)13 +b(instance,)i Fw(\(a)24 b(???-\))151 2045 y FF(is)16 +b(equiv)m(alen)o(t)h(to)d Fw(\(a)24 b(.)47 b(?-\))p FF(.)106 +2132 y Fo(\017)22 b FF(when)d(o)q(ccurring)g(in)g(a)e(list,)j +Fw(??-)d FF(matc)o(hes)h(an)o(y)g(sequence)h(of)f(an)o(ything:)26 +b Fw(\(a)d(??-)h(b\))17 b FF(matc)o(hes)151 2189 y(an)o(y)e(list)h +(whose)f Fw(car)g FF(is)h Fw(a)f FF(and)g(last)g Fw(car)g +FF(is)h Fw(b)p FF(.)106 2276 y Fo(\017)22 b Fw(\(a)i(...\))14 +b FF(matc)o(hes)h(an)o(y)g(list)h(of)f Fw(a)p FF('s,)f(p)q(ossibly)j +(empt)o(y)l(.)106 2364 y Fo(\017)22 b Fw(\(?x)i(?x\))14 +b FF(matc)o(hes)h(an)o(y)g(list)h(of)f(length)h(2)e(whose)i +Fw(car)e FF(is)i FD(e)n(q)f FF(to)f(its)i Fw(cadr)106 +2452 y Fo(\017)22 b Fw(\(\(and)h(\(not)h(a\))f(?x\))h(?x\))15 +b FF(matc)o(hes)g(an)o(y)g(list)i(of)e(length)i(2)e(whose)g +Fw(car)h FF(is)g(not)f FD(e)n(q)g FF(to)g Fw('a)h FF(but)f(is)151 +2508 y FD(e)n(q)g FF(to)f(its)i Fw(cadr)106 2596 y Fo(\017)22 +b Fw(#\(?-)h(?-)h(???-\))15 b FF(matc)o(hes)f(an)o(y)h(v)o(ector)g +(whose)g(length)h(is)f(at)g(least)g(2.)37 2674 y Fn(Note:)36 +b Fv(??-)12 b Fu(and)h Fv(...)f Fu(patterns)j(can)e(not)g(app)q(ear)g +(inside)g(a)g(v)o(ector,)g(where)h(y)o(ou)f(should)f(use)i(???-:)i(F)m +(or)d(example,)37 2731 y Fv(#\(a)22 b(??-)f(b\))d Fu(or)g +Fv(#\(a...\))30 b Fu(are)18 b(in)o(v)n(alid)e(patterns,)k(whereas)g +Fv(#\(a)h(???-\))c Fu(is)h(v)n(alid)f(and)h(matc)o(hes)f(an)o(y)h(v)o +(ector)37 2787 y(whose)d(\014rst)g(elemen)o(t)e(is)h(the)g(atom)e +Fv(a)p Fu(.)p eop +%%Page: 49 49 +49 48 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(49)p 37 64 1838 2 v 37 190 a FI(6.22)56 b(Pro)r(cesses)37 +276 y FB(STk)13 b FF(pro)o(vides)g(access)g(to)f(Unix)h(pro)q(cesses)g +(as)g(\014rst)f(class)h(ob)s(jects.)19 b(Basically)l(,)14 +b(a)f(pro)q(cess)g(con)o(tains)f(four)37 333 y(informations:)20 +b(the)13 b(standard)g(Unix)i(pro)q(cess)e(iden)o(ti\014cation)j(\(ak)m +(a)d(PID\))g(and)h(the)f(three)h(standard)f(\014les)37 +389 y(of)i(the)h(pro)q(cess.)37 506 y Fw(\(run-process)23 +b FD(c)n(ommand)h Fz(p)583 513 y FA(1)626 506 y Fz(p)649 +513 y FA(2)693 506 y Fz(p)716 513 y FA(3)759 506 y Fz(:)8 +b(:)g(:)e Fw(\))835 b FF(pro)q(cedure)37 586 y Fw(run-process)18 +b FF(creates)h(a)h(new)f(pro)q(cess)h(and)f(run)h(the)g(executable)g +(sp)q(eci\014ed)i(in)e FD(c)n(ommand)5 b FF(.)32 b(The)20 +b FD(p)37 642 y FF(corresp)q(ond)13 b(to)e(the)h(command)g(line)i +(argumen)o(ts.)j(The)c(follo)o(wing)f(v)m(alues)h(of)f +FD(p)j FF(ha)o(v)o(e)c(a)h(sp)q(ecial)i(meaning:)106 +734 y Fo(\017)22 b Fw(:input)13 b FF(p)q(ermits)h(to)f(redirect)i(the)e +(standard)h(input)g(\014le)h(of)e(the)h(pro)q(cess.)20 +b(Redirection)15 b(can)f(come)151 791 y(from)20 b(a)f(\014le)j(or)d +(from)h(a)g(pip)q(e.)36 b(T)l(o)20 b(redirect)h(the)f(standard)g(input) +h(from)f(a)g(\014le,)i(the)e(name)g(of)151 847 y(this)c(\014le)h(m)o +(ust)e(b)q(e)h(sp)q(eci\014ed)i(after)d Fw(:input)p FF(.)21 +b(Use)15 b(the)h(sp)q(ecial)i(k)o(eyw)o(ord)d Fw(:pipe)f +FF(to)h(redirect)i(the)151 904 y(standard)e(input)h(from)f(a)f(pip)q +(e.)106 997 y Fo(\017)22 b Fw(:output)c FF(p)q(ermits)h(to)e(redirect)j +(the)e(standard)g(output)g(\014le)i(of)e(the)g(pro)q(cess.)30 +b(Redirection)21 b(can)151 1053 y(go)d(to)g(a)h(\014le)h(or)e(to)g(a)g +(pip)q(e.)32 b(T)l(o)19 b(redirect)g(the)g(standard)f(output)h(to)f(a)g +(\014le,)j(the)d(name)h(of)g(this)151 1110 y(\014le)i(m)o(ust)f(b)q(e)g +(sp)q(eci\014ed)i(after)e Fw(:output)p FF(.)33 b(Use)20 +b(the)g(sp)q(ecial)i(k)o(eyw)o(ord)d Fw(:pipe)h FF(to)f(redirect)i(the) +151 1166 y(standard)15 b(output)g(to)f(a)h(pip)q(e.)106 +1259 y Fo(\017)22 b Fw(:error)14 b FF(p)q(ermits)h(to)f(redirect)h(the) +g(standard)f(error)f(\014le)j(of)e(the)h(pro)q(cess.)20 +b(Redirection)c(can)f(go)f(to)151 1316 y(a)g(\014le)h(or)f(to)g(a)f +(pip)q(e.)22 b(T)l(o)13 b(redirect)i(the)g(standard)e(error)h(to)g(a)f +(\014le,)i(the)g(name)f(of)g(this)g(\014le)i(m)o(ust)d(b)q(e)151 +1372 y(sp)q(eci\014ed)j(after)e Fw(:error)p FF(.)k(Use)d(the)f(sp)q +(ecial)i(k)o(eyw)o(ord)d Fw(:pipe)h FF(to)f(redirect)i(the)f(standard)g +(error)g(to)151 1428 y(a)h(pip)q(e.)106 1522 y Fo(\017)22 +b Fw(:wait)15 b FF(m)o(ust)f(b)q(e)i(follo)o(w)o(ed)f(b)o(y)g(a)g(b)q +(o)q(olean)h(v)m(alue.)21 b(This)16 b(v)m(alue)h(sp)q(eci\014es)f(if)g +(the)f(pro)q(cess)h(m)o(ust)e(b)q(e)151 1578 y(run)h(async)o(hronously) +f(or)g(not.)19 b(By)14 b(default,)g(the)h(pro)q(cess)f(is)h(run)f +(async)o(hronously)g(\(i.e.)20 b Fw(:wait)13 b FF(is)151 +1634 y Fw(#f)p FF(\).)106 1728 y Fo(\017)22 b Fw(:host)c +FF(m)o(ust)g(b)q(e)h(follo)o(w)o(ed)g(b)o(y)f(a)g(string.)30 +b(This)19 b(string)f(represen)o(ts)h(the)f(name)h(of)f(the)g(mac)o +(hine)151 1784 y(on)j(whic)o(h)g(the)g(command)g(m)o(ust)f(b)q(e)h +(executed.)38 b(This)21 b(option)g(uses)g(the)g(external)g(command)151 +1840 y Fw(rsh)p FF(.)26 b(The)18 b(shell)g(v)m(ariable)h +Fw(PATH)e FF(m)o(ust)g(b)q(e)h(correctly)f(set)g(for)g(accessing)h(it)g +(without)f(sp)q(ecifying)151 1897 y(its)f(ab)q(olute)f(path.)37 +1982 y(The)22 b(follo)o(wing)f(example)h(launc)o(hes)g(a)f(pro)q(cess)g +(whic)o(h)h(execute)g(the)f(Unix)h(command)f Fw(ls)g +FF(with)g(the)37 2032 y(argumen)o(ts)15 b Fw(-l)g FF(and)g +Fw(/bin)p FF(.)k(The)d(lines)h(prin)o(ted)f(b)o(y)f(this)g(command)g +(are)g(stored)g(in)h(the)f(\014le)i Fw(/tmp/X)125 2117 +y Fv(\(run-process)i("ls")i("-l")g("/bin")f(:output)h("/tmp/X")f(:wait) +h(#f\))37 2317 y Fw(\(process?)i FD(pr)n(o)n(c)n(ess)t +Fw(\))1236 b FF(pro)q(cedure)37 2398 y(Returns)16 b Fw(#t)f +FF(if)h FD(pr)n(o)n(c)n(ess)h FF(is)f(a)f(pro)q(cess,)g(otherwise)g +(returns)g Fw(#f)p FF(.)37 2512 y Fw(\(process-alive?)22 +b FD(pr)n(o)n(c)n(ess)t Fw(\))1093 b FF(pro)q(cedure)37 +2592 y(Returns)16 b Fw(#t)f FF(if)h FD(pr)n(o)n(c)n(ess)h +FF(if)f(the)f(pro)q(cess)h(is)f(curren)o(tly)h(running,)g(otherwise)f +(returns)h Fw(#f)p FF(.)37 2707 y Fw(\(process-pid)23 +b FD(pr)n(o)n(c)n(ess)t Fw(\))1164 b FF(pro)q(cedure)37 +2787 y(Returns)16 b(an)f(in)o(teger)h(v)m(alue)g(whic)o(h)g(represen)o +(ts)f(the)h(Unix)g(iden)o(ti\014cation)h(\(PID\))d(of)h +FD(pr)n(o)n(c)n(ess)r FF(.)p eop +%%Page: 50 50 +50 49 bop 37 45 a FE(50)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a Fw(\(process-input)22 b FD(pr)n(o)n(c)n(ess)t +Fw(\))1117 b FF(pro)q(cedure)37 247 y Fw(\(process-output)22 +b FD(pr)n(o)n(c)n(ess)t Fw(\))1093 b FF(pro)q(cedure)37 +303 y Fw(\(process-error)22 b FD(pr)n(o)n(c)n(ess)t Fw(\))1117 +b FF(pro)q(cedure)37 387 y(Returns)21 b(the)g(\014le)g(p)q(ort)f(asso)q +(ciated)h(to)e(the)i(standard)f(input,)i(output)e(or)g(error)g(of)f +FD(pr)n(o)n(c)n(ess)s FF(,)i(if)g(it)f(is)37 443 y(redirected)h(in)g +(\(or)e(to\))f(a)i(pip)q(e;)j(otherwise)d(returns)f Fw(#f)p +FF(.)33 b(Note)20 b(that)e(the)i(returned)g(p)q(ort)g(is)g(op)q(ened)37 +500 y(for)d(reading)h(when)f(calling)i Fw(process-output)c +FF(or)i Fw(process-error)p FF(;)f(it)h(is)h(op)q(ened)g(for)f(writing)g +(when)37 556 y(calling)g Fw(process-input)p FF(.)37 702 +y Fw(\(process-wait)23 b FD(pr)n(o)n(c)n(ess)t Fw(\))1140 +b FF(pro)q(cedure)37 786 y Fw(Process-wait)14 b FF(stops)h(the)h +(curren)o(t)f(pro)q(cess)h(un)o(til)h FD(pr)n(o)n(c)n(ess)h +FF(completion.)k Fw(Process-wait)14 b FF(returns)h Fw(#f)37 +843 y FF(when)h FD(pr)n(o)n(c)n(ess)i FF(is)d(already)h(terminated;)f +(it)g(returns)h Fw(#t)e FF(otherwise.)37 989 y Fw +(\(process-exit-status)22 b FD(pr)n(o)n(c)n(ess)t Fw(\))973 +b FF(pro)q(cedure)37 1072 y Fw(Process-exit-status)9 +b FF(returns)h(the)h(exit)h(status)e(of)g FD(pr)n(o)n(c)n(ess)j +FF(if)f(it)f(has)f(\014nished)j(its)e(execution;)i(returns)37 +1129 y Fw(#f)i FF(otherwise.)37 1275 y Fw(\(process-send-signal)22 +b FD(pr)n(o)n(c)n(ess)g(n)s Fw(\))926 b FF(pro)q(cedure)37 +1358 y(Send)16 b(the)e(signal)i(whose)e(in)o(teger)h(v)m(alue)g(is)g +FD(n)j FF(to)c FD(pr)n(o)n(c)n(ess)r FF(.)20 b(V)l(alue)15 +b(of)f FD(n)k FF(is)d(system)f(dep)q(endan)o(t.)20 b(Use)15 +b(the)37 1415 y(de\014ned)i(signal)f(constan)o(ts)e(to)g(mak)o(e)h(y)o +(our)g(program)e(indp)q(endan)o(t)k(of)e(the)g(running)h(system)f +(\(see)g(6.18\).)37 1471 y(The)h(result)g(of)e FD(pr)n(o)n(c)n +(ess-send-signal)j FF(is)f(unde\014ned.)37 1617 y Fw(\(process-kill)23 +b FD(pr)n(o)n(c)n(ess)t Fw(\))1140 b FF(pro)q(cedure)37 +1694 y Fw(Process-kill)16 b FF(brutally)h(kills)i FD(pr)n(o)n(c)n(ess)r +FF(.)25 b(The)17 b(result)g(of)f Fw(process-kill)f FF(is)j +(unde\014ned.)26 b(This)17 b(pro)q(ce-)37 1744 y(dure)f(is)g(equiv)m +(alen)o(t)h(to)125 1849 y Fv(\(process-send-si)o(gnal)h(process)j +(|SIGTERM|\))37 2093 y Fw(\(process-stop)i FD(pr)n(o)n(c)n(ess)t +Fw(\))1140 b FF(pro)q(cedure)37 2150 y Fw(\(process-continue)22 +b FD(pr)n(o)n(c)n(ess)t Fw(\))1045 b FF(pro)q(cedure)37 +2227 y(Those)13 b(pro)q(cedures)h(are)e(only)i(a)o(v)m(ailable)g(on)f +(systems)f(whic)o(h)i(supp)q(ort)f(job)f(con)o(trol.)19 +b FD(Pr)n(o)n(c)n(ess-stop)14 b FF(stops)37 2277 y(the)f(execution)g +(of)f FD(pr)n(o)n(c)n(ess)i FF(and)e FD(pr)n(o)n(c)n(ess-c)n(ontinue)i +FF(resumes)e(its)g(execution.)20 b(They)13 b(are)f(equiv)m(alen)o(t)h +(to)125 2382 y Fv(\(process-send-si)o(gnal)18 b(process)j(|SIGSTOP|\)) +125 2431 y(\(process-send-si)o(gnal)d(process)j(|SIGCONT|\))37 +2675 y Fw(\(process-list)o(\))1307 b FF(pro)q(cedure)37 +2759 y Fw(process-list)14 b FF(returns)h(the)g(list)h(of)f(pro)q +(cesses)h(whic)o(h)g(are)f(curren)o(tly)g(running)i(\(i.e.)j(aliv)o +(e\).)p eop +%%Page: 51 51 +51 50 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(51)p 37 64 1838 2 v 37 190 a FI(6.23)56 b(So)r(c)n(k)n(ets)37 +276 y FB(STk)16 b FF(de\014nes)h(so)q(c)o(k)o(ets,)e(on)h(systems)g +(whic)o(h)g(supp)q(ort)h(them,)e(as)h(\014rst)g(class)g(ob)s(jects.)22 +b(So)q(c)o(k)o(ets)15 b(p)q(ermits)37 333 y(pro)q(cesses)23 +b(to)f(comm)o(unicate)h(ev)o(en)f(if)h(they)f(are)g(on)h(di\013eren)o +(t)f(mac)o(hines.)42 b(So)q(c)o(k)o(ets)22 b(are)g(useful)i(for)37 +389 y(creating)16 b(clien)o(t-serv)o(er)g(applications.)37 +504 y Fw(\(make-client-socket)22 b FD(hostname)i(p)n(ort-numb)n(er)5 +b Fw(\))684 b FF(pro)q(cedure)37 584 y Fw(make-client-socket)11 +b FF(returns)j(a)f(new)h(so)q(c)o(k)o(et)f(ob)s(ject.)18 +b(This)c(so)q(c)o(k)o(et)f(establishes)i(a)e(link)i(b)q(et)o(w)o(een)f +(the)37 641 y(running)j(application)g(listening)g(on)e(p)q(ort)g +FD(p)n(ort-numb)n(er)20 b FF(of)15 b FD(hostname)s FF(.)37 +748 y Fw(\(socket?)23 b FD(so)n(cket)t Fw(\))1281 b FF(pro)q(cedure)37 +828 y(Returns)16 b Fw(#t)f FF(if)h FD(so)n(cket)j FF(is)c(a)g(so)q(c)o +(k)o(et,)f(otherwise)i(returns)f Fw(#f)p FF(.)37 935 +y Fw(\(socket-host-name)22 b FD(so)n(cket)t Fw(\))1066 +b FF(pro)q(cedure)37 1015 y(Returns)19 b(a)e(string)h(whic)o(h)h(con)o +(tains)f(the)g(name)g(of)f(the)h(distan)o(t)g(host)f(attac)o(hed)h(to)f +FD(so)n(cket)s FF(.)28 b(If)18 b FD(so)n(cket)37 1071 +y FF(has)g(b)q(een)g(created)g(with)f Fw(make-client-socket)e +FF(this)j(pro)q(cedure)h(returns)e(the)g(o\016cial)h(name)g(of)f(the)37 +1128 y(distan)o(t)f(mac)o(hine)h(used)g(for)f(connection.)24 +b(If)16 b FD(so)n(cket)k FF(has)c(b)q(een)h(created)f(with)h +Fw(make-server-socket)p FF(,)37 1184 y(this)g(function)g(returns)g(the) +f(o\016cial)h(name)g(of)e(the)i(clien)o(t)g(connected)h(to)d(the)i(so)q +(c)o(k)o(et.)23 b(If)16 b(no)g(clien)o(t)i(has)37 1241 +y(used)e(y)o(et)f(the)g(so)q(c)o(k)o(et,)g(this)g(function)h(returns)f +Fw(#f)p FF(.)37 1348 y Fw(\(socket-host-address)22 b +FD(so)n(cket)t Fw(\))994 b FF(pro)q(cedure)37 1428 y(Returns)12 +b(a)f(string)g(whic)o(h)h(con)o(tains)g(the)f(IP)g(n)o(um)o(b)q(er)h +(of)f(the)g(distan)o(t)g(host)g(attac)o(hed)f(to)h FD(so)n(cket)s +FF(.)19 b(If)11 b FD(so)n(cket)37 1484 y FF(has)21 b(b)q(een)g(created) +g(with)g Fw(make-client-socket)d FF(this)j(pro)q(cedure)g(returns)g +(the)f(IP)h(n)o(um)o(b)q(er)g(of)f(the)37 1541 y(distan)o(t)c(mac)o +(hine)h(used)g(for)f(connection.)24 b(If)16 b FD(so)n(cket)k +FF(has)c(b)q(een)h(created)f(with)h Fw(make-server-socket)p +FF(,)37 1597 y(this)g(function)g(returns)g(the)f(address)g(of)g(the)g +(clien)o(t)i(connected)f(to)f(the)g(so)q(c)o(k)o(et.)23 +b(If)16 b(no)h(clien)o(t)g(has)f(used)37 1654 y(y)o(et)f(the)h(so)q(c)o +(k)o(et,)e(this)h(function)h(returns)g Fw(#f)p FF(.)37 +1761 y Fw(\(socket-local-address)21 b FD(so)n(cket)t +Fw(\))971 b FF(pro)q(cedure)37 1841 y(Returns)16 b(a)f(string)g(whic)o +(h)h(con)o(tains)g(the)f(IP)g(n)o(um)o(b)q(er)h(of)f(the)g(lo)q(cal)h +(host)f(attac)o(hed)g(to)f FD(so)n(cket)t FF(.)37 1948 +y Fw(\(socket-port-number)22 b FD(so)n(cket)t Fw(\))1018 +b FF(pro)q(cedure)37 2028 y(Returns)16 b(the)g(in)o(teger)f(n)o(um)o(b) +q(er)g(of)g(the)g(p)q(ort)g(used)h(for)f FD(so)n(cket)s +FF(.)37 2135 y Fw(\(socket-input)23 b FD(so)n(cket)t +Fw(\))1161 b FF(pro)q(cedure)37 2192 y Fw(\(socket-output)22 +b FD(so)n(cket)t Fw(\))1138 b FF(pro)q(cedure)37 2272 +y(Returns)12 b(the)f(\014le)h(p)q(ort)e(asso)q(ciated)h(for)g(reading)g +(or)f(writing)i(with)f(the)g(program)f(connected)i(with)f +FD(so)n(cket)s FF(.)37 2328 y(If)16 b(no)f(connection)h(has)f(already)h +(b)q(een)g(established,)h(these)e(functions)h(return)f +Fw(#f)p FF(.)37 2378 y(The)j(follo)o(wing)f(example)h(sho)o(ws)e(ho)o +(w)g(to)g(mak)o(e)h(a)f(clien)o(t)i(so)q(c)o(k)o(et.)25 +b(Here)17 b(w)o(e)f(create)h(a)f(so)q(c)o(k)o(et)h(on)f(p)q(ort)37 +2428 y(13)f(of)g(the)g(mac)o(hine)h(\\)p Fw(kaolin.unice.fr)p +FF(")812 2412 y FA(10)847 2428 y FF(:)125 2507 y Fv(\(let)21 +b(\(\(s)g(\(make-client-soc)o(ket)e("kaolin.unice.fr)o(")g(13\)\)\))168 +2557 y(\(format)i(#t)43 b("Time)21 b(is:)g(~A\\n")f(\(read-line)g +(\(socket-input)f(s\)\)\))168 2607 y(\(socket-shutdown)41 +b(s\)\))p 37 2699 735 2 v 74 2726 a Ft(10)107 2742 y +Fs(P)o(ort)12 b(13)h(is)g(generally)i(used)e(for)f(testing:)18 +b(making)c(a)f(connection)h(to)f(it)g(p)q(ermits)g(to)g(kno)o(w)g(the)f +(distan)o(t)i(system's)f(idea)37 2787 y(of)g(the)g(time)h(of)f(da)o(y)m +(.)p eop +%%Page: 52 52 +52 51 bop 37 45 a FE(52)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a Fw(\(make-server-socket)n(\))1164 +b FF(pro)q(cedure)37 247 y Fw(\(make-server-socket)22 +b FD(p)n(ort-numb)n(er)5 b Fw(\))895 b FF(pro)q(cedure)37 +327 y Fw(make-server-socket)15 b FF(returns)h(a)g(new)h(so)q(c)o(k)o +(et)f(ob)s(ject.)23 b(If)17 b FD(p)n(ort-numb)n(er)22 +b FF(is)17 b(sp)q(eci\014ed,)i(the)d(so)q(c)o(k)o(et)g(is)37 +383 y(listening)i(on)d(the)g(sp)q(eci\014ed)i(p)q(ort;)e(otherwise,)g +(the)g(comm)o(unication)h(p)q(ort)f(is)h(c)o(hosen)f(b)o(y)g(the)g +(system.)37 491 y Fw(\(socket-accept-connection)21 b +FD(so)n(cket)t Fw(\))875 b FF(pro)q(cedure)37 571 y Fw +(socket-accept-connection)16 b FF(w)o(aits)h(for)h(a)g(clien)o(t)i +(connection)f(on)g(the)f(giv)o(en)h FD(so)n(cket)s FF(.)30 +b(If)18 b(no)h(clien)o(t)37 628 y(is)e(already)g(w)o(aiting)g(for)e(a)i +(connection,)g(this)g(pro)q(cedure)g(blo)q(c)o(ks)g(its)g(caller;)h +(otherwise,)e(the)h(\014rst)f(con-)37 684 y(nection)22 +b(request)f(on)g(the)g(queue)g(of)g(p)q(ending)h(connections)g(is)g +(connected)f(to)g FD(so)n(cket)s FF(.)37 b(This)21 b(pro)q(ce-)37 +740 y(dure)g(m)o(ust)f(b)q(e)i(called)g(on)e(a)g(serv)o(er)g(so)q(c)o +(k)o(et)g(created)h(with)g Fw(make-server-socket)p FF(.)33 +b(The)20 b(result)h(of)37 797 y Fw(socket-accept-connection)12 +b FF(is)k(unde\014ned.)37 847 y(The)j(follo)o(wing)h(example)f(is)h(a)e +(simple)i(serv)o(er)e(whic)o(h)i(w)o(aits)e(for)g(a)h(connection)g(on)g +(the)g(p)q(ort)f(1234)1826 830 y FA(11)1862 847 y FF(.)37 +897 y(Once)d(the)e(connection)h(with)g(the)f(distan)o(t)g(program)f(is) +i(established,)h(w)o(e)e(read)g(a)g(line)i(on)e(the)g(input)h(p)q(ort) +37 946 y(asso)q(ciated)i(to)e(the)i(so)q(c)o(k)o(et)e(and)i(w)o(e)f +(write)g(the)g(length)h(of)f(this)h(line)g(on)g(its)f(output)g(p)q +(ort.)125 1026 y Fv(\(let)21 b(\(\(s)g(\(make-server-soc)o(ket)e +(1234\)\)\))168 1076 y(\(socket-accept-conn)o(ecti)o(on)g(s\))168 +1125 y(\(let)i(\(\(l)g(\(read-line)f(\(socket-input)f(s\)\)\)\))212 +1175 y(\(format)h(\(socket-output)f(s\))i("Length)g(is:)g(~A\\n")g +(\(string-length)e(l\)\))212 1225 y(\(flush)h(\(socket-output)f +(s\)\)\))168 1275 y(\(socket-shutdown)g(s\)\))37 1462 +y Fw(\(socket-shutdown)j FD(so)n(cket)t Fw(\))1090 b +FF(pro)q(cedure)37 1518 y Fw(\(socket-shutdown)22 b FD(so)n(cket)h +(close)s Fw(\))972 b FF(pro)q(cedure)37 1598 y Fw(Socket-shutdown)12 +b FF(sh)o(utdo)o(wns)h(the)h(connection)h(asso)q(ciated)e(to)g +FD(so)n(cket)t FF(.)19 b FD(Close)d FF(is)e(a)f(b)q(o)q(olean;)i(it)f +(indi-)37 1655 y(cates)f(if)f(the)h(so)q(c)o(k)o(et)e(m)o(ust)h(b)q(e)h +(closed)g(or)f(not,)g(when)h(the)g(connection)g(is)g(destro)o(y)o(ed.) +18 b(Closing)13 b(the)g(so)q(c)o(k)o(et)37 1711 y(forbids)f(further)e +(connections)i(on)f(the)f(same)h(p)q(ort)f(with)h(the)g +Fw(socket-accept-connection)c FF(pro)q(cedure.)37 1768 +y(Omitting)19 b(a)e(v)m(alue)i(for)e FD(close)j FF(implies)g(the)e +(closing)g(of)f(so)q(c)o(k)o(et.)27 b(The)18 b(result)g(of)f +Fw(socket-shutdown)e FF(is)37 1824 y(unde\014ned.)37 +1874 y(The)k(follo)o(wing)g(example)g(sho)o(ws)f(a)g(simple)h(serv)o +(er:)26 b(when)19 b(there)f(is)h(a)f(new)g(connection)i(on)e(the)g(p)q +(ort)37 1924 y(n)o(um)o(b)q(er)d(1234,)d(the)i(serv)o(er)g(displa)o(ys) +h(the)e(\014rst)h(line)h(sen)o(t)f(to)f(it)h(b)o(y)g(the)g(clien)o(t,)h +(discards)f(the)g(others)g(and)37 1974 y(go)h(bac)o(k)g(w)o(aiting)h +(for)e(further)h(clien)o(t)i(connections.)125 2053 y +Fv(\(let)k(\(\(s)g(\(make-server-soc)o(ket)e(1234\)\)\))168 +2103 y(\(let)i(loop)g(\(\))212 2153 y(\(socket-accept-co)o(nnec)o(tion) +d(s\))212 2202 y(\(format)i(#t)i("I've)e(read:)h(~A\\n")g(\(read-line)f +(\(socket-input)f(s\)\)\))212 2252 y(\(socket-shutdown)f(s)k(#f\))212 +2302 y(\(loop\)\)\))37 2489 y Fw(\(socket-down?)h FD(so)n(cket)t +Fw(\))1161 b FF(pro)q(cedure)37 2569 y(Returns)16 b Fw(#t)f +FF(if)h FD(so)n(cket)j FF(has)c(b)q(een)h(previously)h(closed)f(with)g +Fw(socket-shutdown)p FF(.)i(It)d(returns)g Fw(#f)g FF(other-)37 +2626 y(wise.)p 37 2653 735 2 v 74 2680 a Ft(11)107 2696 +y Fs(Under)k(Unix,)h(y)o(ou)f(can)h(simply)g(connect)g(to)e(listening)k +(so)q(c)o(k)o(et)d(with)g(the)g Fq(telnet)d Fs(command.)35 +b(With)20 b(the)f(giv)o(en)37 2742 y(example,)c(this)e(can)h(b)q(e)f +(ac)o(hiev)o(ed)i(b)o(y)e(t)o(yping)i(the)e(follo)o(wing)i(command)f +(in)g(a)f(windo)o(w)g(shell:)37 2787 y Fq($)20 b(telnet)d(localhost)f +(1234)p eop +%%Page: 53 53 +53 52 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(53)p 37 64 1838 2 v 37 190 a Fw(\(socket-dup)23 b FD(so)n(cket)t +Fw(\))1209 b FF(pro)q(cedure)37 264 y(Returns)21 b(a)f(cop)o(y)g(of)f +FD(so)n(cket)t FF(.)34 b(The)21 b(original)g(and)f(the)g(cop)o(y)g(so)q +(c)o(k)o(et)g(can)g(b)q(e)h(used)f(in)o(terc)o(hangeably)l(.)37 +314 y(Ho)o(w)o(ev)o(er,)g(if)g(a)f(new)h(connection)g(is)g(accepted)g +(on)g(one)f(so)q(c)o(k)o(et,)h(the)f(c)o(haracters)g(exc)o(hanged)h(on) +g(this)37 363 y(so)q(c)o(k)o(et)15 b(are)h(not)f(visible)j(on)d(the)h +(other)f(so)q(c)o(k)o(et.)20 b(Duplicating)d(a)e(so)q(c)o(k)o(et)g(is)h +(useful)h(when)f(a)f(serv)o(er)h(m)o(ust)37 413 y(accept)j(m)o(ultiple) +g(sim)o(ultaneous)g(connections.)28 b(The)18 b(follo)o(wing)h(example)g +(creates)e(a)h(serv)o(er)f(listening)37 463 y(on)g(p)q(ort)g(1234.)24 +b(This)17 b(serv)o(er)g(is)g(duplicated)i(and,)e(once)h(t)o(w)o(o)d +(clien)o(ts)j(are)f(presen)o(t,)g(a)f(message)h(is)g(sen)o(t)37 +513 y(on)f(b)q(oth)f(connections.)125 599 y Fv(\(define)20 +b(s1)h(\(make-server-socket)d(1234\)\))125 649 y(\(define)i(s2)h +(\(socket-dup)f(s1\)\))125 699 y(\(socket-accept-c)o(onnec)o(tion)e +(s1\))125 749 y(\(socket-accept-c)o(onnec)o(tion)g(s2\))125 +798 y(;;)j(blocks)g(until)f(two)i(clients)e(are)h(present)125 +848 y(\(display)f("Hello,\\n")g(\(socket-output)e(s1\)\))125 +898 y(\(display)i("world\\n")42 b(\(socket-output)18 +b(s2\)\))125 948 y(\(flush)i(\(socket-output)f(s1\)\))125 +998 y(\(flush)h(\(socket-output)f(s2\)\))37 1200 y Fw +(\(when-socket-ready)j FD(so)n(cket)h(hand)r(ler)5 b +Fw(\))869 b FF(pro)q(cedure)37 1256 y Fw(\(when-socket-ready)22 +b FD(so)n(cket)t Fw(\))1042 b FF(pro)q(cedure)37 1336 +y(De\014nes)19 b(a)f(handler)h(for)e FD(so)n(cket)t FF(.)28 +b(The)18 b(handler)h(is)g(a)e(th)o(unk)h(whic)o(h)h(is)g(executed)g +(when)f(a)g(connection)37 1393 y(is)j(a)o(v)m(ailable)g(on)f +FD(so)n(cket)t FF(.)33 b(If)20 b(the)g(sp)q(ecial)i(v)m(alue)f +Fw(#f)e FF(is)i(pro)o(vided)f(as)g FD(hand)r(ler)5 b +FF(,)20 b(the)g(curren)o(t)g(handler)37 1449 y(for)d +FD(so)n(cket)j FF(is)d(deleted.)25 b(If)17 b(a)g(handler)g(is)h(pro)o +(vided,)f(the)g(v)m(alue)h(returned)f(b)o(y)f Fw(when-socket-ready)e +FF(is)37 1506 y(unde\014ned.)22 b(Otherwise,)16 b(it)f(returns)g(the)h +(handler)g(curren)o(tly)g(asso)q(ciated)f(to)g FD(so)n(cket)s +FF(.)37 1555 y(This)22 b(pro)q(cedure,)i(in)e(conjunction)g(with)g +Fw(socket-dup)e FF(p)q(ermits)i(to)f(build)i(m)o(ultiple-clie)q(n)o(ts) +g(serv)o(ers)37 1605 y(whic)o(h)17 b(w)o(ork)d(async)o(hronously)l(.)20 +b(Suc)o(h)c(a)f(serv)o(er)g(is)g(sho)o(wn)g(b)q(elo)o(w.)125 +1691 y Fv(\(define)20 b(p)i(\(make-server-so)o(cket)c(1234\)\))125 +1741 y(\(when-socket-rea)o(dy)h(p)517 1791 y(\(let)i(\(\(count)f(0\)\)) +561 1841 y(\(lambda)g(\(\))604 1891 y(\(set!)h(count)g(\(+)g(count)g +(1\)\))604 1941 y(\(register-connecti)o(on)e(\(socket-dup)g(p\))j +(count\)\)\)\))125 2040 y(\(define)e(register-connecti)o(on)168 +2090 y(\(let)h(\(\(sockets)f('\(\)\)\))212 2140 y(\(lambda)g(\(s)i +(cnt\))255 2190 y(;;)g(Accept)e(connection)255 2239 y +(\(socket-accept-conn)o(ectio)o(n)f(s\))255 2289 y(;;)j(Save)f(socket)f +(somewhere)g(to)i(avoid)e(GC)i(problems)255 2339 y(\(set!)f(sockets)g +(\(cons)f(s)i(sockets\)\))255 2389 y(;;)g(Create)e(a)i(handler)e(for)h +(reading)g(inputs)f(from)h(this)g(new)g(connection)255 +2439 y(\(let)g(\(\(in)43 b(\(socket-input)19 b(s\)\))386 +2488 y(\(out)i(\(socket-output)e(s\)\)\))299 2538 y(\(when-port-readab) +o(le)g(in)408 2588 y(\(lambda)h(\(\))452 2638 y(\(let)h(\(\(l)g +(\(read-line)e(in\)\)\))495 2688 y(\(if)i(\(eof-object?)f(l\))582 +2738 y(;;)i(delete)e(current)h(handler)582 2787 y(\(when-port-readable) +d(in)k(#f\))p eop %%Page: 54 54 -54 53 bop 75 47 a FC(54)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 169 754 a @beginspecial 37 @llx 367 @lly +54 53 bop 37 45 a FE(54)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 114 146 1685 2 v 113 259 2 113 v 139 186 +a(Name)p 517 259 V 270 w(Corresp)q(onding)g(C)g(t)o(yp)q(e)p +1157 259 V 131 w(Corresp)q(onding)83 b(Sc)o(heme)1183 +242 y(T)o(yp)q(e)p 1798 259 V 114 261 1685 2 v 114 269 +V 113 326 2 57 v 139 309 a Fw(:void)p 517 326 V 284 w(void)p +1157 326 V 544 w FD(None)p 1798 326 V 114 327 1685 2 +v 113 440 2 113 v 139 367 a Fw(:char)p 517 440 V 284 +w(char)p 1157 440 V 544 w FF(Sc)o(heme)25 b(c)o(haracter)e(or)g(Sc)o +(heme)1183 423 y(in)o(teger)p 1798 440 V 114 442 1685 +2 v 113 498 2 57 v 139 482 a Fw(:short)p 517 498 V 260 +w(short)g(int)p 1157 498 V 425 w FF(Sc)o(heme)16 b(in)o(teger)p +1798 498 V 114 500 1685 2 v 113 557 2 57 v 139 540 a +Fw(:ushort)p 517 557 V 236 w(unsigned)23 b(short)g(int)p +1157 557 V 210 w FF(Sc)o(heme)16 b(in)o(teger)p 1798 +557 V 114 558 1685 2 v 113 615 2 57 v 139 598 a Fw(:int)p +517 615 V 308 w(int)p 1157 615 V 568 w FF(Sc)o(heme)g(in)o(teger)p +1798 615 V 114 616 1685 2 v 113 673 2 57 v 139 656 a +Fw(:uint)p 517 673 V 284 w(unsigned)23 b(integer)p 1157 +673 V 257 w FF(Sc)o(heme)16 b(in)o(teger)p 1798 673 V +114 674 1685 2 v 113 731 2 57 v 139 714 a Fw(:long)p +517 731 V 284 w(long)23 b(integer)p 1157 731 V 353 w +FF(Sc)o(heme)16 b(in)o(teger)p 1798 731 V 114 733 1685 +2 v 113 789 2 57 v 139 772 a Fw(:ulong)p 517 789 V 260 +w(unsigned)23 b(long)g(integer)p 1157 789 V 138 w FF(Sc)o(heme)16 +b(in)o(teger)p 1798 789 V 114 791 1685 2 v 113 847 2 +57 v 139 830 a Fw(:float)p 517 847 V 260 w(float)p 1157 +847 V 520 w FF(Sc)o(heme)g(Real)p 1798 847 V 114 849 +1685 2 v 113 905 2 57 v 139 888 a Fw(:double)p 517 905 +V 236 w(double)p 1157 905 V 496 w FF(Sc)o(heme)g(Real)p +1798 905 V 114 907 1685 2 v 113 1020 2 113 v 139 946 +a Fw(:static-ptr)p 517 1020 V 140 w FF(p)q(oin)o(ter)g(on)f(a)g(static) +g(area)p 1157 1020 V 174 w(Sc)o(heme)31 b(C-p)q(oin)o(ter)g(ob)s(ject)e +(or)1183 1003 y(Sc)o(heme)16 b(String)p 1798 1020 V 114 +1021 1685 2 v 113 1134 2 113 v 139 1061 a Fw(:dynamic-ptr)24 +b FD(or)139 1117 y Fw(\(:void)f(*\))p 517 1134 V 543 +1061 a FF(p)q(oin)o(ter)32 b(on)g(a)f(dynamic)i(area)543 +1117 y(\()p Fw(malloc)p FF(ated\))p 1157 1134 V 1183 +1061 a(Sc)o(heme)e(C-p)q(oin)o(ter)g(ob)s(ject)e(or)1183 +1117 y(Sc)o(heme)16 b(String)p 1798 1134 V 114 1136 1685 +2 v 113 1249 2 113 v 139 1176 a Fw(:string)144 b FD(or)139 +1232 y Fw(\(:char)23 b(*\))p 517 1249 V 543 1176 a(char)g(*)12 +b FF(\(p)q(oin)o(ter)h(on)f(a)g(dynamic)543 1232 y(string\))p +1157 1249 V 1183 1176 a(Sc)o(heme)31 b(C-p)q(oin)o(ter)g(ob)s(ject)e +(or)1183 1232 y(Sc)o(heme)16 b(String)p 1798 1249 V 114 +1251 1685 2 v 113 1307 2 57 v 139 1290 a Fw(:boolean)p +517 1307 V 212 w(int)p 1157 1307 V 568 w FF(Sc)o(heme)g(b)q(o)q(olean)p +1798 1307 V 114 1309 1685 2 v 658 1386 a(T)l(able)g(4:)k(FFI)15 +b(prede\014ned)h(t)o(yp)q(es)582 1581 y Fv(;;)22 b(Just)f(write)f(the)i +(line)f(read)g(on)g(the)g(socket)582 1631 y(\(begin)626 +1681 y(\(format)f(out)h("On)h(#~A)f(-->)g(~A\\n")g(cnt)g(l\))626 +1730 y(\(flush)f(out\)\)\)\)\)\)\)\)\)\))37 1991 y FI(6.24)56 +b(F)-5 b(oreign)19 b(F)-5 b(unction)19 b(In)n(terface)37 +2084 y FF(The)c FB(STk)e FF(F)l(oreign)i(F)l(unction)f(In)o(terface)h +(\(FFI)e(for)g(short\))h(has)g(b)q(een)h(de\014ned)g(to)f(allo)o(w)g +(an)g(easy)g(access)37 2141 y(to)k(functions)i(written)e(in)h(C)g +(without)f(needing)i(to)e(build)i(C-wrapp)q(ers)f(and,)g(consequen)o +(tly)l(,)h(without)37 2197 y(an)o(y)d(need)h(to)f(write)g(C)g(co)q(de.) +26 b(Note)17 b(that)f(the)h(FFI)g(is)h(v)o(ery)e(mac)o(hine)i(dep)q +(enden)o(t)h(and)e(that)g(it)g(w)o(orks)37 2254 y(only)h(on)e(a)g +(limited)i(set)f(of)f(arc)o(hitectures)777 2237 y FA(12)814 +2254 y FF(.)24 b(Moreo)o(v)o(er,)15 b(since)j(FFI)e(allo)o(ws)h(v)o +(ery)f(lo)o(w)g(lev)o(el)i(access,)f(it)37 2310 y(is)f(easy)f(to)g +(crash)g(the)g(in)o(terpreter)h(when)f(using)h(an)f(external)h(C)f +(function.)37 2371 y(The)h(de\014nition)i(of)d(an)g(external)h +(function)h(is)f(done)g(with)f(the)h(syn)o(tax)f Fw(define-external)p +FF(.)k(This)d(form)37 2427 y(tak)o(es)e(as)g(argumen)o(ts)g(a)g(t)o(yp) +q(ed)g(list)i(of)e(parameters)f(and)i(accepts)f(sev)o(eral)h(options)f +(to)g(de\014ne)h(the)g(name)37 2483 y(of)i(the)g(function)h(in)g(the)f +(C)g(w)o(orld,)g(the)g(library)h(whic)o(h)g(de\014nes)g(this)g +(function,)f(.)8 b(.)f(.)33 b(The)17 b(t)o(yp)q(e)g(of)g(the)37 +2540 y(function)j(result)g(and)f(the)g(t)o(yp)q(es)g(of)g(its)g +(argumen)o(ts)f(are)h(de\014ned)h(in)g(T)l(able)g(4.)31 +b(This)20 b(table)f(lists)h(the)37 2596 y(v)m(arious)f(k)o(eyw)o(ords)f +(reserv)o(ed)g(for)g(denoting)h(t)o(yp)q(es)f(and)h(their)f(equiv)m +(alence)j(b)q(et)o(w)o(een)e(the)f(C)g(and)h(the)37 2653 +y(Sc)o(heme)d(w)o(orlds.)p 37 2699 735 2 v 74 2726 a +Ft(12)107 2742 y Fs(In)f(release)h(3.99,)f(FFI)g(is)h(kno)o(wn)g(to)f +(w)o(ork)g(on)g(the)h(follo)o(wing)h(arc)o(hitectures)g(:)k(ix86)16 +b(\(but)g(not)f(y)o(et)g(MS)h(Windo)o(ws\),)37 2787 y(Sun)e(Sparc,)g +(HP)e(9000,)i(SGI.)p eop +%%Page: 55 55 +55 54 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(55)p 37 64 1838 2 v 37 190 a Fw(\(define-external)22 +b Fo(h)p FF(name)p Fo(i)h(h)p FF(parameters)p Fo(i)g(h)p +FF(options)p Fo(i)o Fw(\))654 b FF(syn)o(tax)37 271 y(The)11 +b(form)f Fw(define-external)f FF(binds)i(a)g(new)f(pro)q(cedure)i(to)e +Fo(h)p FF(name)p Fo(i)o FF(.)18 b(The)11 b(arit)o(y)f(of)g(this)h(new)g +(pro)q(cedure)37 327 y(is)19 b(de\014ned)h(b)o(y)e(the)g(t)o(yp)q(ed)g +(list)h(of)f(parameters)f(giv)o(en)i(b)o(y)f Fo(h)p FF(parameters)p +Fo(i)n FF(.)29 b(This)18 b(parameters)g(list)h(is)f(a)37 +383 y(list)h(of)d(couples)j(whose)e(\014rst)g(elemen)o(t)h(is)g(the)f +(name)h(of)e(the)i(parameter,)f(and)g(the)g(second)h(one)g(is)f(is)h(a) +37 440 y(k)o(eyw)o(ord)g(represen)o(ting)g(its)g(t)o(yp)q(e)g(\(see)g +(table)g(for)g(equiv)m(alence\).)30 b(All)19 b(the)f(t)o(yp)q(es)g +(de\014ned)h(in)g(T)l(able)g(4,)37 496 y(except)14 b +Fw(:void)p FF(,)e(are)h(allo)o(w)o(ed)g(for)f(the)h(parameters)f(of)h +(a)f(foreign)h(function.)20 b Fw(Define-external)11 b +FF(accepts)37 553 y(sev)o(eral)16 b(options:)106 637 +y Fo(\017)22 b Fw(:return-type)14 b FF(is)i(used)g(to)f(de\014ne)i(the) +f(t)o(yp)q(e)g(of)f(the)h(v)m(alue)g(returned)g(b)o(y)g(the)g(foreign)f +(function.)151 687 y(The)g(t)o(yp)q(e)f(returned)h(m)o(ust)f(b)q(e)h(c) +o(hosen)g(in)h(the)e(t)o(yp)q(es)h(sp)q(eci\014ed)h(in)g(the)e(table.) +20 b(F)l(or)14 b(instance:)325 789 y Fv(\(define-external)19 +b(maximum\(\(a)h(:int\))g(\(b)i(:int\)\))369 838 y(:return-type)d +(:int\))151 997 y FF(de\014nes)14 b(the)e(foreign)h(function)g(maxim)o +(um)f(whic)o(h)h(tak)o(es)f(t)o(w)o(o)f(C)h(in)o(tegers)h(and)f +(returns)g(an)h(in)o(teger)151 1053 y(result.)24 b(Omitting)18 +b(this)f(option)f(default)h(to)f(a)h(result)g(t)o(yp)q(e)f(equal)h(to)f +Fw(:void)g FF(\(i.e.)24 b(the)17 b(returned)151 1110 +y(v)m(alue)g(is)e FD(unde\014ne)n(d)5 b FF(\).)106 1196 +y Fo(\017)22 b Fw(:entry-name)13 b FF(is)i(used)h(to)e(sp)q(ecify)i +(the)e(name)h(of)f(the)h(foreign)g(function)g(in)h(the)f(C)f(w)o(orld.) +20 b(If)15 b(this)151 1245 y(option)h(is)f(omitted,)g(the)g(en)o +(try-name)g(is)h(supp)q(osed)g(to)f(b)q(e)h Fo(h)p FF(name)p +Fo(i)o FF(.)k(F)l(or)15 b(instance:)325 1347 y Fv(\(define-external)k +(minimum\(\(a)h(:int\))g(\(b)i(:int\)\))369 1397 y(:return-type)d(:int) +369 1447 y(:entry-name)41 b("min"\))151 1606 y FF(de\014nes)17 +b(the)f(Sc)o(heme)g(function)h Fw(minimum)d FF(whose)i(application)h +(executes)g(the)e(C)h(function)g(called)151 1662 y Fw(min)p +FF(.)106 1748 y Fo(\017)22 b Fw(:library-name)c FF(is)h(used)h(to)f(sp) +q(ecify)i(the)e(library)h(whic)o(h)g(con)o(tains)g(the)f +(foreign-function.)34 b(If)151 1798 y(necessary)l(,)15 +b(the)h(library)g(is)f(loaded)h(b)q(efore)g(calling)h(the)e(C)g +(function.)21 b(So,)325 1900 y Fv(\(define-external)e(minimum\(\(a)h +(:int\))g(\(b)i(:int\)\))369 1950 y(:return-type)41 b(:int)369 +1999 y(:entry-name)63 b("min")369 2049 y(:library-name)19 +b("libminmax"\))151 2208 y FF(de\014nes)11 b(a)f(function)h(whic)o(h)g +(will)h(execute)f(the)f(function)h Fw(min)f FF(lo)q(cated)g(in)h(the)g +(library)g Fw(libminmax.xx)151 2264 y FF(\(where)k Fw(xx)g +FF(is)h(the)f(su\016x)g(used)h(for)e(shared)h(libraries)i(on)e(the)g +(running)h(system)f(\(generally)i Fw(so)d FF(or)151 2321 +y Fw(sl)p FF(\).)37 2405 y(Hereafter,)h(there)g(are)g(some)g(commen)o +(ted)g(de\014nitions)i(of)e(external)g(functions:)168 +2488 y Fv(\(define-external)k(isatty)h(\(\(fd)h(:int\)\))234 +2538 y(:return-type)e(:boolean\))168 2638 y(\(define-external)g(system) +h(\(\(cmd)h(\(:char)g(*\)\)\))g Fi(;;)g(or)g(\(\(cmd)g(:string\)\))234 +2688 y Fv(:return-type)e(:int\))168 2787 y(\(define-external)g(malloc)h +(\(\(size)h(:ulong\)\))p eop +%%Page: 56 56 +56 55 bop 37 45 a FE(56)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 234 190 a Fv(:return-type)i(\(void)i(*\)\))168 +290 y(\(define-external)e(free)i(\()g(\(p)h(\(:void)e(*\))i(\)\))f(\)) +37 433 y FF(All)c(these)f(functions)g(are)f(de\014ned)h(in)h(the)e(C)g +(standard)g(library)l(,)h(hence)g(it)g(is)g(not)e(necessary)i(to)f(sp)q +(ecify)37 489 y(the)h Fw(:library-name)d FF(option.)106 +582 y Fo(\017)22 b Fw(istty)16 b FF(is)i(declared)g(here)f(as)g(a)f +(function)i(whic)o(h)g(tak)o(es)e(an)h(in)o(teger)g(and)g(returns)g(a)g +(b)q(o)q(olean)g(\(in)151 638 y(fact,)c(the)h(v)m(alue)g(returned)g(b)o +(y)f(the)h(C)f(function)h Fw(isatty)f FF(is)h(an)f Fw(int)p +FF(,)g(but)h(w)o(e)f(ask)g(here)h(to)f(the)g(FFI)151 +695 y(system)i(to)f(translate)h(this)h(result)g(as)e(a)h(b)q(o)q(olean) +h(v)m(alue)h(in)f(the)f(Sc)o(heme)h(w)o(orld\).)106 788 +y Fo(\017)22 b Fw(system)15 b FF(is)h(a)g(function)h(whic)o(h)f(tak)o +(es)f(a)h(string)g(as)f(parameter)g(and)h(returns)g(an)g +Fw(int)p FF(.)21 b(Note)16 b(that)151 844 y(the)f(t)o(yp)q(e)f(of)g +(the)h(parameter,)e(can)i(b)q(e)g(sp)q(eci\014ed)i(as)d(a)g +Fw(\(:char)23 b(*\))14 b FF(or)g Fw(:string)p FF(,)g(as)g(indicated)i +(in)151 901 y(T)l(able)g(4.)106 994 y Fo(\017)22 b Fw(malloc)d +FF(is)i(a)e(function)i(whic)o(h)g(tak)o(es)e(one)h(parameter)f(\(an)g +Fw(unsigned)k(long)h(int)19 b FF(and)h(whic)o(h)151 1051 +y(returns)12 b(a)f Fw(\(:void)23 b(*\))11 b FF(\(or)g +Fw(:dynamic-ptr)p FF(\).)16 b(Sp)q(ecifying)e(that)d(the)h(result)g(is) +g(a)f(dynamic)h(p)q(oin)o(ter)151 1107 y(\(instead)19 +b(of)g(a)g(static)f(one\))h(means)g(that)f(w)o(e)h(w)o(an)o(t)f(that)g +(the)h(Garbage)f(Collector)39 b(tak)o(es)18 b(in)o(to)151 +1163 y(accoun)o(t)d(the)f(area)g(allo)q(cated)i(b)o(y)f(the)f(C)h +(function)g Fw(malloc)f FF(\(i.e.)20 b(if)15 b(this)g(area)f(b)q +(ecomes)i(no)e(more)151 1220 y(accessible,)j(the)e(GC)g(disp)q(oses)h +(it)f(with)h(the)f Fw(free)g FF(function)1207 1203 y +FA(13)1245 1220 y FF(.)106 1313 y Fo(\017)22 b Fw(free)c +FF(is)i(a)e(function)i(whic)o(h)g(tak)o(es)e(a)g(dynamic)i(p)q(oin)o +(ter)g(and)f(deallo)q(cates)h(the)f(area)f(it)h(p)q(oin)o(ts.)151 +1370 y(Since)14 b(the)e(de\014nition)h(of)f(this)g(function)h(sp)q +(eci\014es)h(no)e(result)g(t)o(yp)q(e,)g(it)g(is)h(supp)q(osed)g(to)e +(b)q(e)i Fw(:void)1826 1353 y FA(14)1862 1370 y FF(.)37 +1456 y(External)22 b(functions)g(can)g(also)f(ha)o(v)o(e)g(a)g(v)m +(ariable)i(n)o(um)o(b)q(er)e(of)g(parameters)g(b)o(y)g(using)h(the)f +(standard)37 1506 y(Sc)o(heme)16 b FD(dot)k FF(notation.)g(F)l(or)14 +b(instance,)125 1592 y Fv(\(define-external)k(printf)j(\(\(format)f +(:string\))g(.)i(l\))168 1641 y(:return-type)41 b(:int\))37 +1777 y FF(de\014nes)21 b(a)e(Sc)o(heme)h(function)g(with)g(one)f(or)g +(more)g(parameters)g(\(the)g(\014rst)g(one)g(b)q(eing)i(a)e(string\).) +32 b(Of)37 1827 y(course,)15 b(the)g(parameters)f(whic)o(h)i +(constitute)f(the)g(v)m(ariable)i(parameters)d(list)i(m)o(ust)e(ha)o(v) +o(e)g(a)h(t)o(yp)q(e)g(whic)o(h)37 1877 y(app)q(ears)h(in)g(the)f +(third)h(column)g(of)f(T)l(able)h(4.)j(Some)d(examples)f(using)h(the)g +Fw(printf)e FF(function:)168 1963 y Fv(\(printf)21 b("This)f(is)i(a)f +(\045s)h(test")e("good"\))343 2062 y Fu(=)-7 b Fp(\))21 +b Fi(displays)71 b Fv(This)21 b(is)h(a)f(good)g(test)168 +2112 y(\(printf)g("char:)f('\045c')h(Dec:)g('\04504d')g(Hex)g +('\04504x'")f(#\\space)g(100)i(100\))343 2212 y Fu(=)-7 +b Fp(\))21 b Fi(displays)71 b Fv(char:)21 b(')h(')f(Dec:)g('0100')g +(Hex)g('0064')37 2354 y Fn(Note:)50 b Fu(The)17 b(t)o(yp)q(es)h +Fv(:dynamic-ptr)p Fu(,)d Fv(:static-ptr)g Fu(and)i Fv(:string)e +Fu(are)j(compatible)d(when)j(used)g(for)f(foreign)37 +2411 y(function)f(parameter.)22 b(This)15 b(giv)o(es)g(a)h(seman)o(tic) +e(whic)o(h)h(is)h(similar)d(to)i(the)h(one)g(of)e(C,)h(where)i +Fv(void)k(*)15 b Fu(is)g(a)g(com-)37 2467 y(patible)g(with)g(all)e +(other)j(p)q(oin)o(ter)f(t)o(yp)q(es.)22 b(Ho)o(w)o(ev)o(er,)15 +b(di\013erenciating)g(those)h(t)o(yp)q(es)g(is)f(useful)g(for)f(con)o +(v)o(erting)h(the)37 2524 y(function)f(return)h(v)n(alue)e(to)h(a)g +(prop)q(er)h(Sc)o(heme)e(t)o(yp)q(e.)p 37 2562 735 2 +v 74 2589 a Ft(13)107 2605 y Fs(P)o(oin)o(ters)f(de\014ned)h(with)f +Fq(:dynamic-)o(pt)o(r)c Fs(are)k(alw)o(a)o(ys)g(unallo)q(cated)i(with)e +Fq(free)p Fs(.)j(Consequen)o(tly)m(,)e(areas)f(allo)q(cated)h(with)37 +2650 y(another)h(allo)q(cator)h(than)f(the)f(standard)h(one)g(m)o(ust)f +(b)q(e)g(declared)i(as)e Fq(:static-p)o(tr)d Fs(and)j(freed)g(b)o(y)h +(hand)74 2680 y Ft(14)107 2696 y Fs(Usage)g(of)f(mallo)q(c)j(and)f +(free)e(are)h(for)g(illustratio)q(n)j(purp)q(ose)e(here.)20 +b(Their)15 b(usage)f(in)h(a)f(program)h(m)o(ust)f(b)q(e)g(a)o(v)o +(oided,)i(if)37 2742 y(p)q(ossible,)h(b)q(ecause)e(it)f(can)g(ha)o(v)o +(e)g(in)o(teract)h(badly)h(with)e(the)g(w)o(a)o(y)f(the)h(in)o +(terpreter)i(manages)e(memory)g(or)g(it)h(can)f(conduct)37 +2787 y(to)f Fr(cr)n(ashing)h Fs(programs)g(if)f(y)o(ou)h(don't)f(tak)o +(e)g(care.)p eop +%%Page: 57 57 +57 56 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(57)p 37 64 1838 2 v 37 190 a Fn(Note:)38 b Fu(When)14 +b(a)g(function)g(has)g(a)g Fv(:return-type)e Fu(whic)o(h)i(is)g +Fv(:string)p Fu(,)e Fv(:dynamic-ptr)g Fu(or)i Fv(:static-ptr)p +Fu(,)d(and)37 240 y(the)16 b(return)g(v)n(alue)e(is)g(the)i(C)f +Fv(NULL)e Fu(p)q(oin)o(ter,)i(the)g(Sc)o(heme)g(v)n(alue)f(returned)j +(b)o(y)d(the)h(function)g(is,)f(b)o(y)h(con)o(v)o(en)o(tion,)37 +290 y(equal)h(to)g Fv(#f)p Fu(.)23 b(F)m(or)16 b(instance,)h(the)f(GNU) +g Fv(readline)e Fu(function)i(allo)o(ws)e(line)i(editing)f +Fn(\022)-21 b(a)17 b(la)i Fu(Emacs)c(returns)j Fv(NULL)37 +340 y Fu(when)h(the)g(user)h(has)e(t)o(yp)q(ed)h(an)f(end)h(of)e +(\014le.)32 b(The)18 b(follo)o(wing)e(lines)i(sho)o(w)g(ho)o(w)g(to)g +(mak)o(e)f(a)h(simple)f(shell-lik)o(e)37 390 y(toplev)o(el)d(using)g +(FFIs.)125 501 y Fv(\(define-external)k(system)j(\(\(var)f(\(:char)h +(*\)\)\))168 551 y(:return-type)f(:int\))125 650 y(\(define-external)e +(readline)i(\(\(prompt)g(:string\)\))168 700 y(:library-name)f +("libreadline")168 750 y(:return-type)41 b(:string\))125 +850 y(;;)21 b(A)h(Shell-like)d(toplevel)125 900 y(\(do)i(\(\(l)g +(\(readline)f("?>)h("\))g(\(readline)f("?>)i("\)\)\))212 +949 y(\(\(not)f(l\)\))168 999 y(\(system)g(l\)\))37 1257 +y Fw(\(external-exists?)h FD(entry)t Fw(\))1081 b FF(pro)q(cedure)37 +1313 y Fw(\(external-exists?)22 b FD(entry)i(libr)n(ary)t +Fw(\))929 b FF(pro)q(cedure)37 1392 y(Returns)16 b Fw(#t)f +FF(if)h FD(entry)j FF(is)c(de\014ned)i(as)d(an)i(external)f(sym)o(b)q +(ol)h(in)g FD(libr)n(ary)s FF(.)k(If)c FD(libr)n(ary)j +FF(is)c(not)g(pro)o(vided)h(the)37 1442 y(sym)o(b)q(ol)i(is)g(searc)o +(hed)f(in)h(the)f FB(STk)f FF(in)o(terpreter)i(or)e(in)i(libraries)h +(that)d(it)i(uses.)25 b(This)18 b(function)g(can)f(b)q(e)37 +1491 y(useful)g(to)d(de\014ne)j(external)e(functions)h(conditionally:) +168 1603 y Fv(\(when)21 b(\(external-exists?)d("dup2"\))234 +1653 y(\(define-external)g(dup2)j(\(\(oldfd)f(:int\))h(\(newfd)g +(:int\)\))299 1702 y(:return-type)e(:int\)\))37 1960 +y Fw(\(c-string->string)j FD(str)5 b Fw(\))1130 b FF(pro)q(cedure)37 +2038 y(STk)11 b(strings)f(are)g(more)f(general)i(than)f(C)g(strings)g +(since)h(they)f(accept)h(n)o(ull)g(c)o(haracter.)18 b +Fw(c-string->string)37 2088 y FF(tak)o(es)c(an)g(area)f(of)h(c)o +(haracters)f(built)i(b)o(y)f(a)g(call)h(to)f(a)f(foreign)h(function)h +(\(t)o(ypically)g(the)f(result)h(of)f(a)f(func-)37 2138 +y(tion)h(returning)g(a)f Fw(:static-ptr)p FF(,)f Fw(:dynamic-ptr)g +FF(or)h Fw(:string)p FF(\))f(and)i(con)o(v)o(ert)f(it)h(to)e(a)i(prop)q +(er)f(Sc)o(heme)37 2188 y(string.)125 2299 y Fv(\(define-external)18 +b(sprintf)i(\(\(str)h(:string\))f(\(format)h(:string\))f(.)h(l\))190 +2349 y(:return-type)41 b(:int\))125 2449 y(\(let)21 b(\(\(str)f +(\(make-string)g(5)h(#\\?\)\)\))168 2498 y(\(sprintf)f(str)i("\045x")f +(100\))168 2548 y(\(cons)g(str)g(\(C-string->string)d(str\)\)\))343 +2648 y Fu(=)-7 b Fp(\))21 b Fv(\("64\\0??")f(.)i("64"\))p +eop +%%Page: 58 58 +58 57 bop 37 45 a FE(58)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a FI(6.25)56 b(Miscellaneous)37 +277 y FF(This)16 b(section)g(lists)g(the)f(primitiv)o(es)i(de\014ned)f +(in)g FB(STk)f FF(that)f(did)j(not)e(\014t)g(an)o(ywhere)g(else.)37 +396 y Fw(\(eval)24 b Fo(h)p FF(expr)p Fo(i)o Fw(\))1418 +b FF(syn)o(tax)37 452 y Fw(\(eval)24 b Fo(h)p FF(expr)p +Fo(i)f(h)p FF(en)o(vironmen)o(t)p Fo(i)p Fw(\))1112 b +FF(syn)o(tax)37 526 y(Ev)m(aluates)16 b Fo(h)p FF(expr)p +Fo(i)g FF(in)g(the)f(giv)o(en)h(en)o(vironmen)o(t.)21 +b Fo(h)p FF(En)o(vironmen)o(t)p Fo(i)15 b FF(ma)o(y)g(b)q(e)h(omitted,) +g(in)g(whic)o(h)g(case)g(it)37 576 y(defaults)g(to)f(the)g(global)h(en) +o(vironmen)o(t.)125 665 y Fv(\(define)k(foo)h(\(let)g(\(\(a)g(1\)\))g +(\(lambda)g(\(\))g(a\)\)\))125 715 y(\(foo\))500 b Fu(=)-7 +b Fp(\))22 b Fv(1)125 765 y(\(eval)e('\(set!)h(a)h(2\))f +(\(procedure-enviro)o(nment)d(foo\)\))125 815 y(\(foo\))500 +b Fu(=)-7 b Fp(\))22 b Fv(2)37 1024 y Fw(\(version)o(\))1427 +b FF(pro)q(cedure)37 1105 y(returns)16 b(a)e(string)i(iden)o(tifying)h +(the)e(curren)o(t)g(v)o(ersion)g(of)g FB(STk)p FF(.)37 +1225 y Fw(\(machine-type)o(\))1307 b FF(pro)q(cedure)37 +1306 y(returns)17 b(a)f(string)h(iden)o(tifying)i(the)d(kind)i(of)e +(mac)o(hine)i(whic)o(h)f(is)h(running)f(the)g(in)o(terpreter.)25 +b(The)17 b(form)37 1362 y(of)e(the)h(result)f(is)h Fw +([os-name]-[os-version]-[p)o(rocessor)o(-type])p FF(.)37 +1483 y Fw(\(random)23 b FD(n)s Fw(\))1398 b FF(pro)q(cedure)37 +1564 y(returns)16 b(an)f(in)o(teger)g(in)h(the)f(range)g(0,)g +FD(n)e Fo(\000)d FF(1)15 b(inclusiv)o(e.)37 1685 y Fw +(\(set-random-seed!)22 b FD(se)n(e)n(d)5 b Fw(\))1103 +b FF(pro)q(cedure)37 1765 y(Set)18 b(the)f(random)g(seed)h(to)f(the)g +(sp)q(eci\014ed)j FD(se)n(e)n(d)s FF(.)27 b Fw(Seed)16 +b FF(m)o(ust)h(b)q(e)h(an)f(in)o(teger)h(whic)o(h)g(\014ts)f(in)h(a)f +(C)h Fw(long)37 1822 y(int)p FF(.)37 1942 y Fw(\(eval-string)23 +b FD(string)g(envir)n(onment)t Fw(\))919 b FF(pro)q(cedure)37 +2016 y(Ev)m(aluates)16 b(the)f(con)o(ten)o(ts)f(of)g(the)h(giv)o(en)g +FD(string)j FF(in)d(the)g(giv)o(en)g FD(envir)n(onment)j +FF(and)d(returns)g(its)g(result.)20 b(If)37 2066 y FD(envir)n(onment)e +FF(is)d(omitted)f(it)h(defaults)g(to)e(the)i(global)g(en)o(vironmen)o +(t.)20 b(If)14 b(ev)m(aluation)i(leads)f(to)f(an)g(error,)37 +2116 y(the)i(result)f(of)g Fw(eval-string)f FF(is)i(unde\014ned.)125 +2205 y Fv(\(define)k(x)i(1\))125 2255 y(\(eval-string)d("\(+)i(x)h +(1\)"\))343 2305 y Fu(=)-7 b Fp(\))21 b Fv(2)125 2355 +y(\(eval-string)e("x")i(\(let)g(\(\(x)g(2\)\))g +(\(the-environment\)\)\))343 2405 y Fu(=)-7 b Fp(\))21 +b Fv(2)37 2614 y Fw(\(read-from-string)h Fo(h)p FF(string)p +Fo(i)o Fw(\))1039 b FF(pro)q(cedure)37 2688 y(P)o(erforms)18 +b(a)h(read)g(from)f(the)h(giv)o(en)g FD(string)t FF(.)31 +b(If)19 b FD(string)j FF(is)d(the)h(empt)o(y)e(string,)i(an)e(end)i(of) +f(\014le)h(ob)s(ject)37 2738 y(is)j(returned.)39 b(If)22 +b(an)f(error)g(o)q(ccurs)h(during)g(string)g(reading,)h(the)f(result)g +(of)f Fw(read-from-string)e FF(is)37 2787 y(unde\014ned.)p +eop +%%Page: 59 59 +59 58 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(59)p 37 64 1838 2 v 125 190 a Fv(\(read-from-strin)o(g)19 +b("123)i(456"\))343 240 y Fu(=)-7 b Fp(\))21 b Fv(123)125 +290 y(\(read-from-strin)o(g)e(""\))343 340 y Fu(=)-7 +b Fp(\))21 b Fv(an)h(eof)f(object)37 537 y Fw(\(dump)j +FD(string)t Fw(\))1356 b FF(pro)q(cedure)37 617 y Fw(Dump)15 +b FF(grabs)f(the)h(curren)o(t)g(con)o(tin)o(uation)30 +b(and)16 b(creates)e(an)h(image)g(of)g(the)g(curren)o(t)g +FB(STk)f FF(in)o(terpreter)h(in)37 673 y(the)h(\014le)h(whose)e(name)h +(is)g FD(string)609 657 y FA(15)647 673 y FF(.)21 b(This)16 +b(image)g(can)g(b)q(e)g(used)g(later)g(to)f(restart)f(the)i(in)o +(terpreter)g(from)37 730 y(the)g(sa)o(v)o(ed)f(state.)k(See)c(the)h +FB(STk)e FF(man)h(page)g(ab)q(out)g(the)h Fw(-image)e +FF(option)h(for)g(more)g(details.)37 786 y Fn(Note:)37 +b Fu(Image)12 b(creation)j(cannot)f(b)q(e)g(done)g(if)f(Tk)h(is)g +(initialized.)37 899 y Fw(\(trace-var)23 b FD(symb)n(ol)g(thunk)5 +b Fw(\))1086 b FF(pro)q(cedure)37 973 y Fw(Trace-var)13 +b FF(call)i(the)f(giv)o(en)g FD(thunk)19 b FF(when)14 +b(the)g(v)m(alue)h(of)e(the)h(v)m(ariable)h(denoted)f(b)o(y)g +FD(symb)n(ol)k FF(is)c(c)o(hanged.)125 1106 y Fv(\(define)20 +b(x)i(1\))125 1156 y(\(define)e(y)i(0\))125 1206 y(\(trace-var)d('x)j +(\(lambda)e(\(\))h(\(set!)g(y)h(1\)\)\))125 1256 y(\(set!)e(x)i(2\))125 +1305 y(\(cons)e(x)i(y\))343 1355 y Fu(=)-7 b Fp(\))21 +b Fv(\(2)h(.)f(1\))37 1489 y Fn(Note:)42 b Fu(Sev)o(eral)15 +b(traces)i(can)e(b)q(e)h(asso)q(ciated)g(with)e(a)h(single)g(sym)o(b)q +(ol.)20 b(They)15 b(are)h(executed)h(in)d(rev)o(erse)j(order)f(to)37 +1539 y(their)f(de\014nition.)i(F)m(or)d(instance,)g(the)h(execution)f +(of)125 1622 y Fv(\(begin)168 1672 y(\(trace-var)20 b('z)h(\(lambda)g +(\(\))g(\(display)f("One"\)\)\))168 1722 y(\(trace-var)g('z)h(\(lambda) +g(\(\))g(\(display)f("Two"\)\)\))168 1772 y(\(set!)h(z)h(10\)\))37 +1912 y Fu(will)13 b(displa)o(y)g(the)h(string)g Fv("Two")f +Fu(b)q(efore)i(the)f(string)g Fv("One")f Fu(on)h(the)g(curren)o(t)h +(output)g(p)q(ort.)37 2025 y Fw(\(untrace-var)23 b FD(symb)n(ol)5 +b Fw(\))1170 b FF(pro)q(cedure)37 2105 y(Deletes)16 b(all)g(the)g +(traces)e(asso)q(ciated)i(to)e(the)i(v)m(ariable)g(denoted)g(b)o(y)f +FD(symb)n(ol)t FF(.)37 2218 y Fw(\(error)24 b FD(string)f +Fz(str)q(ing)466 2225 y FA(1)509 2218 y Fz(obj)570 2225 +y FA(2)613 2218 y Fz(:)8 b(:)g(:)e Fw(\))981 b FF(pro)q(cedure)37 +2298 y Fw(error)22 b FF(prin)o(ts)h(the)f FD(obj)7 b +FF(s)22 b(according)g(to)g(the)g(sp)q(eci\014cation)j(giv)o(en)d(in)h +FD(string)j FF(on)c(the)h(curren)o(t)f(error)37 2355 +y(p)q(ort)c(\(or)f(in)i(an)f(error)f(windo)o(w)h(if)h(Tk)e(is)i +(initialized\).)31 b(The)18 b(sp)q(eci\014cation)i(string)e(follo)o(ws) +g(the)g(\\tilde)37 2411 y(con)o(v)o(en)o(tions")c(of)f +Fw(format)p FF(\(see)g(6.10\).)18 b(Once)d(the)f(message)f(is)h(prin)o +(ted,)h(execution)g(returns)e(to)g(toplev)o(el.)37 2581 +y Fw(\(gc\))1546 b FF(pro)q(cedure)37 2661 y(Runs)17 +b(the)e(garbage)f(collector.)21 b(See)16 b(6.18)e(for)g(the)h(signals)h +(asso)q(ciated)g(to)e(garbage)h(collection.)p 37 2699 +735 2 v 74 2726 a Ft(15)107 2742 y Fs(Image)f(creation)h(is)g(not)f(y)o +(et)g(implemen)o(ted)j(on)d(all)h(systems.)21 b(The)14 +b(curren)o(t)h(v)o(ersion)g(\(3.99\))f(allo)o(ws)i(image)f(dumping)37 +2787 y(only)g(on)e(some)g(platforms:)18 b(SunOs)c(4.1.x,)f(Lin)o(ux)h +(1,)f(F)m(reeBsd)p eop +%%Page: 60 60 +60 59 bop 37 45 a FE(60)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a Fw(\(gc-stats)o(\))1403 b FF(pro)q(cedure)37 +271 y(Pro)o(vides)14 b(some)f(statistics)h(ab)q(out)f(curren)o(t)g +(memory)g(usage.)19 b(This)14 b(pro)q(cedure)h(is)f(primarily)g(for)f +(debug-)37 327 y(ging)j(the)f FB(STk)g FF(in)o(terpreter,)g(hence)h +(its)f(w)o(eird)h(prin)o(ting)g(format.)37 440 y Fw(\(expand-heap)23 +b FD(n)s Fw(\))1278 b FF(pro)q(cedure)37 521 y(Expand)18 +b(the)f(heap)g(so)f(that)h(it)g(will)h(con)o(tains)f(at)f(least)h +FD(n)j FF(cells.)27 b(Normally)l(,)17 b(the)g(heap)h(automatically)37 +577 y(gro)o(ws)e(when)h(more)f(memory)f(is)i(needed.)25 +b(Ho)o(w)o(ev)o(er,)16 b(using)h(only)g(automatic)f(heap)g(gro)o(wing)g +(is)h(some-)37 633 y(times)h(v)o(ery)e(p)q(enalizin)q(g.)28 +b(This)17 b(is)h(particularly)g(true)f(for)f(programs)g(whic)o(h)i +(uses)f(a)g(lot)g(of)g(temp)q(orary)37 690 y(data)11 +b(\(whic)o(h)h(are)f(not)g(p)q(oin)o(ted)h(b)o(y)g(an)o(y)f(a)g(v)m +(ariable\))h(and)g(a)f(small)h(amoun)o(t)f(of)g(global)h(data.)18 +b(In)12 b(this)f(case,)37 746 y(the)18 b(garbage)g(collector)g(will)i +(b)q(e)e(often)g(called)h(and)g(the)f(heap)g(will)h(not)f(b)q(e)h +(automatically)f(expanded)37 803 y(\(since)k(most)d(of)h(the)g +(consumed)h(heap)f(will)i(b)q(e)f(reclaimed)h(b)o(y)e(the)g(GC\).)f +(This)i(could)g(b)q(e)g(anno)o(ying)37 859 y(sp)q(ecially)d(for)d +(program)f(where)h(resp)q(onse)h(time)f(is)h(critical.)21 +b(Using)16 b Fw(expand-heap)d FF(p)q(ermits)j(to)e(enlarge)37 +916 y(the)g(heap)f(size)h(\(whic)o(h)g(is)g(set)e(to)h(20000)f(cells)i +(b)o(y)f(default\),)h(to)e(a)o(v)o(oid)h(those)g(con)o(tin)o(ual)h +(calls)g(to)f(the)g(GC.)37 1086 y Fw(\(get-internal-info)n(\))1188 +b FF(pro)q(cedure)37 1166 y(Returns)16 b(a)f(7-length)h(v)o(ector)e +(whic)o(h)i(con)o(tains)g(the)f(follo)o(wing)h(informations:)106 +1257 y(0)22 b(total)15 b(cpu)h(used)f(in)h(milli-second)q(s)106 +1349 y(1)22 b(n)o(um)o(b)q(er)16 b(of)e(cells)j(curren)o(tly)f(in)g +(use.)106 1442 y(2)22 b(total)15 b(n)o(um)o(b)q(er)g(of)g(allo)q(cated) +h(cells)106 1534 y(3)22 b(n)o(um)o(b)q(er)16 b(of)e(cells)j(used)f +(since)g(the)g(last)f(call)h(to)f Fw(get-internal-info)106 +1627 y FF(4)22 b(n)o(um)o(b)q(er)16 b(of)e(gc)i(runs)106 +1720 y(5)22 b(total)15 b(time)g(used)h(in)g(the)f(gc)106 +1812 y(6)22 b(a)15 b(b)q(o)q(olean)h(indicating)h(if)f(Tk)f(is)h +(initialized)37 1960 y Fw(\(sort)24 b FD(obj)g(pr)n(e)n(dic)n(ate)s +Fw(\))1215 b FF(pro)q(cedure)37 2034 y FD(Obj)26 b FF(m)o(ust)19 +b(b)q(e)h(a)f(list)h(or)f(a)g(v)o(ector.)32 b Fw(Sort)19 +b FF(returns)g(a)g(cop)o(y)h(of)f FD(obj)26 b FF(sorted)19 +b(according)h(to)e FD(pr)n(e)n(dic)n(ate)s FF(.)37 2083 +y FD(Pr)n(e)n(dic)n(ate)e FF(m)o(ust)d(b)q(e)g(a)g(pro)q(cedure)h(whic) +o(h)g(tak)o(es)e(t)o(w)o(o)g(argumen)o(ts)g(and)h(returns)g(a)g(true)g +(v)m(alue)h(if)f(the)g(\014rst)37 2133 y(argumen)o(t)i(is)h(strictly)f +(\\b)q(efore")g(the)h(second.)125 2217 y Fv(\(sort)k('\(1)i(2)f(-4)h +(12)f(9)h(-1)f(2)g(3\))h(<\))735 2267 y Fu(=)-7 b Fp(\))22 +b Fv(\(-4)f(-1)g(1)h(2)f(2)h(3)f(9)h(12\))125 2317 y(\(sort)e(#\("one") +h("two")g("three")f("four"\))255 2367 y(\(lambda)h(\(x)g(y\))h(\(>)f +(\(string-length)e(x\))i(\(string-length)e(y\)\)\)\))735 +2417 y Fu(=)-7 b Fp(\))22 b Fv(#\("three")d("four")i("one")g("two"\))53 +2614 y Fw(\(uncode)i FD(form)s Fw(\))1315 b FF(pro)q(cedure)37 +2688 y(When)14 b FB(STk)f FF(ev)m(aluates)h(an)f(expression)h(it)f +(enco)q(des)h(it)g(so)f(that)f(further)h(ev)m(aluations)i(of)d(this)i +(expression)37 2738 y(will)h(b)q(e)f(more)f(e\016cien)o(t.)20 +b(Since)15 b(enco)q(ded)g(forms)d(are)h(generally)i(di\016cult)g(to)d +(read,)h Fw(uncode)g FF(can)g(b)q(e)h(used)37 2787 y(to)h +(\(re-\)obtain)g(the)g(original)i(form.)p eop +%%Page: 61 61 +61 60 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(61)p 37 64 1838 2 v 125 190 a Fv(\(define)20 b(\(foo)h(a)h(b\))190 +240 y(\(let)f(\(\(x)g(a\))h(\(y)f(\(+)g(b)h(1\)\)\))f(\(cons)g(x)g +(y\)\)\))125 340 y(\(procedure-body)d(foo\))735 390 y +Fu(=)-7 b Fp(\))22 b Fv(\(lambda)e(\(a)h(b\))626 439 +y(\(let)g(\(\(x)g(a\))g(\(y)h(\(+)f(b)h(1\)\)\))f(\(cons)f(x)i(y\)\)\)) +125 489 y(\(foo)f(1)g(2\))414 b Fu(=)-7 b Fp(\))22 b +Fv(\(1)f(.)h(3\))125 539 y(\(procedure-body)c(foo\))735 +589 y Fu(=)-7 b Fp(\))43 b Fv(\(lambda)21 b(\(a)g(b\))626 +639 y(\(#let)g(\(x)g(y\))757 689 y(\(#)778 +738 y(\(#)i(#)e(1\)\))669 +788 y(\(#)h(#)1018 +838 y(#\)\)\))125 938 y(\(uncode)f +(\(procedure-body)f(foo\)\))735 987 y Fu(=)-7 b Fp(\))22 +b Fv(\(lambda)e(\(a)h(b\))648 1037 y(\(let)g(\(\(x)g(a\))g(\(y)h(\(+)f +(b)h(1\)\)\))f(\(cons)f(x)i(y\)\)\))37 1184 y Fn(Note:)34 +b Fu(When)12 b(a)e(macro)g(has)h(b)q(een)i(directly)e(expanded)h(in)o +(to)e(the)i(macro)e(call)g(co)q(de,)i(it)f(is)f(not)h(p)q(ossible)h(to) +f(retriev)o(e)37 1241 y(the)k(original)d(macro)h(call.)k(Set)d +Fv(*debug*)f Fu(to)h Fv(#t)f Fu(to)h(a)o(v)o(oid)e(macro)h(expansion)h +(in-lining.)37 1365 y Fw(\(time)24 b Fo(h)p FF(expr)p +Fo(i)o Fw(\))1427 b FF(macro)37 1446 y(Ev)m(aluates)20 +b(the)f(expression)h Fo(h)p FF(expr)p Fo(i)e FF(in)i(the)f(curren)o(t)g +(en)o(vironmen)o(t.)31 b(Prin)o(ts)19 b(the)g(elapsed)h(CPU)f(time)37 +1502 y(and)d(the)f(n)o(um)o(b)q(er)h(of)e(conses)i(used)g(b)q(efore)f +(returning)h(the)f(result)h(of)f(this)g(ev)m(aluation.)37 +1626 y Fw(\(apropos)23 b FD(symb)n(ol)5 b Fw(\))1266 +b FF(pro)q(cedure)37 1701 y Fw(Apropos)11 b FF(returns)g(a)g(list)i(of) +e(sym)o(b)q(ol)g(whose)h(prin)o(t)g(name)f(con)o(tains)h(the)f(c)o +(haracters)g(of)g FD(symb)n(ol)t FF(.)18 b(Sym)o(b)q(ols)37 +1750 y(are)d(searc)o(hed)h(for)e(in)i(the)g(curren)o(t)f(en)o(vironmen) +o(t.)125 1842 y Fv(\(apropos)20 b('cadd\))343 1892 y +Fu(=)-7 b Fp(\))21 b Fv(\(caddar)g(caddr)f(cadddr\))37 +2105 y Fw(\(inspect)j FD(obj)7 b Fw(\))1338 b FF(pro)q(cedure)37 +2186 y Fw(Inspect)11 b FF(p)q(ermits)h(to)f(graphically)i(insp)q(ect)g +(an)f(ob)s(ject.)18 b(The)12 b(\014rst)f(call)i(of)e(this)h(pro)q +(cedure)h(creates)e(a)g(top)37 2243 y(lev)o(el)17 b(windo)o(w)f(con)o +(taining)g(the)g(ob)s(ject)f(to)g(insp)q(ect)i(and)f(its)f(curren)o(t)h +(v)m(alue.)22 b(If)16 b(the)f(insp)q(ector)i(windo)o(w)37 +2299 y(is)k(already)e(on)h(screen,)h FD(obj)26 b FF(will)21 +b(b)q(e)f(app)q(ended)i(to)c(the)i(list)g(of)g(insp)q(ected)h(ob)s +(jects.)32 b(The)20 b(insp)q(ector)37 2356 y(windo)o(w)c(con)o(tains)f +(men)o(us)g(whic)o(h)g(p)q(ermit)h(to)e(call)i(the)f(view)o(er)g(or)g +(detailer)g(on)g(eac)o(h)g(insp)q(ected)i(ob)s(ject.)37 +2412 y(See)f(the)f(on-line)i(do)q(cumen)o(tation)e(for)f(further)h +(details.)21 b(A)14 b(view)i(of)e(the)h(general)h(insp)q(ector)f(is)h +(giv)o(en)f(in)37 2469 y(\014gure)h(1.)37 2526 y Fn(Note:)37 +b Fu(Tk)14 b(m)o(ust)f(b)q(e)h(initialized)f(to)g(use)i +Fv(inspect)p Fu(.)37 2650 y Fw(\(view)24 b FD(obj)7 b +Fw(\))1409 b FF(pro)q(cedure)37 2731 y Fw(View)14 b FF(p)q(ermits)h(to) +f(obtain)g(a)g(graphical)h(represen)o(tation)g(of)e(an)i +FB(STk)e FF(ob)s(ject.)19 b(The)c(t)o(yp)q(e)f(of)g(represen)o(ta-)37 +2787 y(tion)i(dep)q(ends)i(on)d(the)h(t)o(yp)q(e)g(of)f(the)h(view)o +(ed)h(ob)s(ject.)j(Here)c(again,)g(men)o(us)g(are)f(pro)o(vided)i(to)e +(switc)o(h)h(to)p eop +%%Page: 62 62 +62 61 bop 37 45 a FE(62)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 169 748 a @beginspecial 37 @llx 367 @lly 415 @urx 467 @ury 3780 @rwi @setspecial %%BeginDocument: Inspector.ps @@ -8367,8 +8705,8 @@ end origstate restore %%EndDocument - @endspecial 651 845 a FD(Figure)g(1:)k(A)c(view)g(of)f(the)h(Insp)q -(ector)321 2520 y @beginspecial 37 @llx 171 @lly 342 + @endspecial 622 846 a FF(Figure)f(1:)j(A)d(view)f(of)g(the)g(Insp)q +(ector)321 2494 y @beginspecial 37 @llx 171 @lly 342 @urx 467 @ury 3050 @rwi @setspecial %%BeginDocument: View.ps @@ -12473,11 +12811,11 @@ end origstate restore %%EndDocument - @endspecial 673 2611 a(Figure)g(2:)k(A)c(view)g(of)f(the)i(View)o(er)p + @endspecial 646 2592 a(Figure)h(2:)j(A)d(view)f(of)g(the)h(View)o(er)p eop -%%Page: 55 55 -55 54 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(55)p 75 64 1763 2 v 379 2220 a @beginspecial 37 @llx +%%Page: 63 63 +63 62 bop 37 45 a FB(STk)17 b FE(Reference)h(Man)o(ual)1262 +b(63)p 37 64 1838 2 v 379 1728 a @beginspecial 37 @llx 87 @lly 314 @urx 467 @ury 2770 @rwi @setspecial %%BeginDocument: Detail.ps @@ -17262,404 +17600,528 @@ end origstate restore %%EndDocument - @endspecial 663 2311 a FD(Figure)14 b(3:)k(A)c(view)g(of)f(the)h -(Detailer)p eop -%%Page: 56 56 -56 55 bop 75 47 a FC(56)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 75 179 a FD(or)k(to)f(the)h(view)o(er.)30 -b(See)19 b(the)f(on-line)f(do)q(cumen)o(tation)f(for)h(more)g(details.) -29 b(Figure)18 b(3)f(sho)o(ws)h(the)g(detailer)75 229 -y(examining)11 b(a)j FB(tk-c)n(ommand)p FD(.)75 278 y -Fl(Note:)32 b Fs(Tk)13 b(m)o(ust)g(b)q(e)h(initialize)q(d)i(to)d(use)g -Ft(detail)p Fs(.)75 384 y Fu(\(quit)21 b FB(r)n(etc)n(o)n(de)s -Fu(\))1303 b FD(pro)q(cedure)75 433 y Fu(\(quit)o(\))1453 -b FD(pro)q(cedure)75 483 y Fu(\(exit)21 b FB(r)n(etc)n(o)n(de)s -Fu(\))1303 b FD(pro)q(cedure)75 533 y Fu(\(exit)o(\))1453 -b FD(pro)q(cedure)75 583 y Fu(\(bye)21 b FB(r)n(etc)n(o)n(de)s -Fu(\))1325 b FD(pro)q(cedure)75 633 y Fu(\(bye)o(\))1475 -b FD(pro)q(cedure)75 706 y(Exits)20 b(the)h Fz(STk)g -FD(in)o(terpreter)h(with)e(the)g(sp)q(eci\014ed)i(in)o(teger)f(return)g -(co)q(de.)38 b(If)20 b(omitted,)g(the)h(in)o(terpreter)75 -756 y(terminates)14 b(with)f(a)h(return)h(co)q(de)g(of)e(0.)p + @endspecial 635 1826 a FF(Figure)16 b(3:)j(A)d(view)f(of)g(the)g +(Detailer)37 1964 y(the)h(insp)q(ector)g(or)f(to)g(the)g(detailer.)22 +b(See)16 b(the)g(on-line)h(do)q(cumen)o(tation)f(for)e(more)h(details.) +22 b(A)15 b(snapshot)37 2020 y(of)g(the)h(view)o(er)f(is)h(giv)o(en)f +(in)i(\014gure)e(2.)37 2077 y Fn(Note:)37 b Fu(Tk)14 +b(m)o(ust)f(b)q(e)h(initialized)f(to)g(use)i Fv(view)p +Fu(.)37 2194 y Fw(\(detail)23 b FD(obj)7 b Fw(\))1362 +b FF(pro)q(cedure)37 2274 y Fw(detail)21 b FF(p)q(ermits)g(to)f(displa) +o(y)i(the)f(\014elds)h(of)f(a)f(comp)q(osite)i(Sc)o(heme)f(ob)s(ject.) +36 b(The)21 b(t)o(yp)q(e)g(of)g(detailer)37 2331 y(dep)q(ends)c(on)f +(the)f(t)o(yp)q(e)g(of)g(the)h(comp)q(osite)f(ob)s(ject)g(detailed.)22 +b(Here)15 b(again,)g(men)o(us)h(are)f(pro)o(vided)h(to)f(go)37 +2387 y(to)i(the)f(insp)q(ector)i(or)e(to)g(the)h(view)o(er.)25 +b(See)17 b(the)g(on-line)h(do)q(cumen)o(tation)g(for)e(more)g(details.) +25 b(Figure)17 b(3)37 2444 y(sho)o(ws)e(the)g(detailer)i(examining)f(a) +f FD(tk-c)n(ommand)p FF(.)37 2500 y Fn(Note:)37 b Fu(Tk)14 +b(m)o(ust)f(b)q(e)h(initialized)f(to)g(use)i Fv(detail)p +Fu(.)37 2618 y Fw(\(quit)24 b FD(r)n(etc)n(o)n(de)s Fw(\))1334 +b FF(pro)q(cedure)37 2674 y Fw(\(quit\))1498 b FF(pro)q(cedure)37 +2731 y Fw(\(exit)24 b FD(r)n(etc)n(o)n(de)s Fw(\))1334 +b FF(pro)q(cedure)37 2787 y Fw(\(exit\))1498 b FF(pro)q(cedure)p eop -%%Page: 57 57 -57 56 bop 809 1059 a FH(P)m(art)32 b(I)s(I)741 1266 y -FA(Annexes)935 2924 y FD(57)p eop -%%Page: 58 58 -58 57 bop eop -%%Page: 59 59 -59 58 bop 75 490 a FH(App)s(endix)33 b(A)75 698 y FA(Using)39 -b(the)f(Tk)h(to)s(olkit)75 914 y FD(When)13 b Fz(STk)g -FD(detects)i(that)e(a)f FB(tk-c)n(ommand)18 b FD(m)o(ust)12 -b(b)q(e)h(called,)f(parameters)h(are)g(pro)q(cessed)i(to)e(b)q(e)g -(recognized)75 964 y(b)o(y)18 b(the)g(corresp)q(onding)h(to)q(olkit)d -(function.)30 b(Since)18 b(the)h(Tk)e(to)q(olkit)g(is)h(left)f -(\(mostly\))g(unmo)q(di\014ed,)g(all)f(its)75 1014 y(primitiv)o(es)g -(\\think")h(there)j(is)d(a)h(running)g(Tcl)g(in)o(terpreter)h(b)q -(ehind)g(the)f(scene.)32 b(Consequen)o(tly)m(,)19 b(to)f(w)o(ork)75 -1064 y(with)h(the)h(Tk)f(to)q(olkit,)g(a)f(little)h(set)h(of)f -(rewriting)g(rules)g(m)o(ust)g(b)q(e)g(kno)o(wn.)34 b(These)20 -b(rules)g(are)g(describ)q(ed)75 1113 y(hereafter.)75 -1163 y Fl(Note:)36 b Fs(This)14 b(app)q(endix)i(is)f(placed)g(here)f -(to)g(p)q(ermit)h(an)f Fj(STk)f Fs(user)i(to)e(mak)o(e)h(programs)h -(with)f(the)g(original)j(Tcl/Tk)75 1213 y(do)q(cumen)o(tation)g(b)o(y)e -(hand.)23 b(In)15 b(no)g(case)g(will)i(it)e(substitute)h(to)f(the)g -(abundan)o(t)h(Tcl/Tk)g(man)o(ual)g(pages)f(nor)g(to)g(the)75 -1263 y(excellen)o(t)g(b)q(o)q(ok)f(b)o(y)f(J.)f(Ousterhout[11)r(])75 -1401 y Fw(1)67 b(Calling)24 b(a)e(Tk-command)75 1492 -y FD(Since)13 b(Tcl)f(uses)i(strings)f(to)f(comm)o(unicate)e(with)i -(the)h(Tk)f(to)q(olkit,)f(parameters)i(to)f(a)g FB(Tk-c)n(ommand)17 -b FD(m)o(ust)12 b(b)q(e)75 1542 y(translated)i(to)g(strings)h(b)q -(efore)f(calling)f(the)i(C)e(function)h(whic)o(h)g(implemen)o(t)d(it.) -18 b(The)c(follo)o(wing)e(con)o(v)o(ersions)75 1592 y(are)i(done,)g -(dep)q(ending)g(on)g(the)h(t)o(yp)q(e)f(of)f(the)i(parameter)e(that)h -Fz(STk)h FD(m)o(ust)d(giv)o(e)i(to)f(the)i(to)q(olkit:)179 -1676 y FC(sym)o(b)q(ol:)k FD(the)c(prin)o(t)e(name)g(of)g(the)i(sym)o -(b)q(ol;)179 1742 y FC(n)o(um)o(b)q(er:)j FD(the)d(external)f(represen) -o(tation)i(of)d(the)h(n)o(um)o(b)q(er)g(expressed)i(in)d(radix)h(10;) -179 1809 y FC(string:)k FD(no)c(con)o(v)o(ersion;)179 -1876 y FC(k)o(eyw)o(ord:)20 b FD(the)11 b(prin)o(t)f(name)f(of)h(the)g -(k)o(eyw)o(ord)h(where)g(the)g(initial)d(semicolon)h(has)h(b)q(een)i -(replaced)270 1926 y(b)o(y)i(a)f(dash)h(\(\\-"\);)179 -1993 y FC(b)q(o)q(olean:)20 b FD(the)14 b(string)g("0")f(if)g -Fu(#f)h FD(and)f("1")g(if)g Fu(#t)179 2059 y FC(tk-command:)19 -b FD(the)c(name)e(of)g(the)h FB(tk-c)n(ommand)179 2126 -y FC(closure:)19 b FD(the)c(address)g(of)e(the)h(closure)h(using)f(the) -g(represen)o(tation)i(sho)o(wn)e(in)f(6.17.)179 2193 -y FC(otherwise:)19 b FD(the)14 b(external)h(\\slashi\014ed")e(v)o -(ersion)h(of)f(the)i(ob)r(ject.)75 2272 y(As)c(an)g(example,)f(let)h -(us)h(mak)o(e)d(a)i(button)g(with)g(a)g(lab)q(el)f(con)o(taining)g(the) -i(string)f Fu("Hello,)20 b(word")p FD(.)c(According)75 -2318 y(the)e(original)f(Tk/Tcl)g(do)q(cumen)o(tation,)f(this)i(can)g(b) -q(e)h(done)f(in)f(Tcl)h(with)153 2398 y Ft(button)k(.hello)f(-text)h -("Hello,)f(world")75 2523 y FD(F)m(ollo)o(wing)11 b(the)k(rewriting)f -(rules)g(expressed)i(ab)q(o)o(v)o(e,)d(this)h(can)g(b)q(e)h(done)f(in)g -Fz(STk)g FD(with)153 2602 y Ft(\(button)j('.hello)g('-text)h("Hello,)e -(world"\))75 2728 y FD(This)c(call)g(de\014nes)h(a)f(new)h(widget)f(ob) -r(ject)h(whic)o(h)f(is)g(stored)i(in)d(the)i Fz(STk)g -FD(v)n(ariable)e Fu(.hello)p FD(.)16 b(This)c(ob)r(ject)h(can)75 -2773 y(b)q(e)j(used)g(as)f(a)g(pro)q(cedure)j(to)d(customize)g(our)g -(button.)23 b(F)m(or)14 b(instance,)i(setting)g(the)g(b)q(order)g(of)f -(this)g(button)75 2819 y(to)f(5)f(pixels)h(wide)g(and)g(its)f(bac)o -(kground)h(to)g(gra)o(y)f(w)o(ould)g(b)q(e)i(done)f(in)g(Tcl)f(with)935 -2924 y(59)p eop -%%Page: 60 60 -60 59 bop 75 47 a FC(60)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 153 179 a Ft(.hello)k(configure)e(-border)h(5)i -(-backgroun)o(d)d(gray)75 287 y FD(In)e Fz(STk)g FD(this)g(w)o(ould)f -(b)q(e)i(expressed)h(as)153 350 y Ft(\(.hello)h('configure)f('-border)h -(5)i('-backgro)o(und)d("gray"\))75 459 y FD(Since)d(k)o(eyw)o(ord)g -(colon)f(is)g(replaced)i(b)o(y)e(a)h(dash)g(when)g(a)f -Fu(Tk-command)f FD(is)h(called,)g(this)h(expression)h(could)e(also)75 -504 y(ha)o(v)o(e)i(b)q(een)h(written)f(as:)153 567 y -Ft(\(.hello)j('configure)i Ff(:b)q(order)h Ft(5)h Ff(:bac)o(kground)e -Ft("gray"\))75 747 y Fw(2)67 b(Asso)r(ciating)22 b(Callbac)n(ks)h(to)f -(Tk-commands)75 834 y FD(Starting)13 b(with)h(v)o(ersion)f(3.0,)f -Fz(STk)i FD(callbac)o(ks)g(are)g(Sc)o(heme)f(closures)1180 -819 y Fy(1)1200 834 y FD(.)18 b(Apart)c(scroll)f(commands,)e(callbac)o -(ks)75 879 y(are)18 b(Sc)o(hemes)f(pro)q(cedures)j(without)c -(parameter.)28 b(Supp)q(ose)18 b(for)f(example,)f(that)i(w)o(e)f(w)o -(an)o(t)g(to)g(asso)q(ciate)h(a)75 925 y(command)11 b(with)j(the)g -(previous)g Fu(.hello)f FD(button.)18 b(In)c(Tcl,)f(suc)o(h)i(a)f -(command)d(can)j(b)q(e)g(expressed)j(as)153 988 y Ft(.hello)h -(configure)e(-command)g Fn(f)p Ft(puts)j(stdout)e("Hello,)g(world";)g -(destroy)g(.)p Fn(g)75 1096 y FD(In)d Fz(STk)p FD(,)g(w)o(e)g(can)g -(write)153 1159 y Ft(\(.hello)j('configure)i Ff(:command)g -Ft(\(lambda)d(\(\))840 1205 y(\(display)g("Hello,)h(world\\n"\))840 -1251 y(\(destroy)f(*root*\)\)\))75 1363 y FD(When)c(the)h(user)g(will)d -(press)j(the)g(mouse)e(left)h(button,)g(the)g(closure)h(asso)q(ciated)f -(to)g(the)h Fu(:command)d FD(option)h(will)75 1413 y(b)q(e)k(ev)n -(aluated)g(in)f(the)h(global)e(en)o(vironmen)o(t.)19 -b(Ev)n(aluation)13 b(of)h(the)h(giv)o(en)f(closure)i(will)d(displa)o(y) -h(the)h(message)75 1463 y(and)f(call)f(the)h Fu(destroy)f -FB(Tk-c)n(ommand)p FD(.)75 1513 y Fl(Note:)75 b Fs(The)17 -b(ro)q(ot)h(widget)g(is)g(denoted)g(\\.")30 b(in)18 b(Tcl.)31 -b(This)18 b(con)o(v)o(en)o(tion)h(is)f(am)o(biguous)h(with)f(the)f -(dotted)h(pair)75 1563 y(con)o(v)o(en)o(tion)c(and)e(the)g(dot)f(m)o -(ust)h(b)q(e)g(quoted)h(to)e(a)o(v)o(oid)i(problems.)18 -b(Since)13 b(this)f(problem)h(arises)g(so)f(often,)f(the)h(v)n(ariable) -75 1612 y Ft(*root*)e Fs(has)k(b)q(een)g(in)o(tro)q(duced)h(in)f -Fj(STk)e Fs(to)h(denote)h(the)f(Tk)g(main)h(windo)o(w.)75 -1725 y FG(Managing)19 b(Widget)f(Scrollbars)75 1798 y -FD(When)h(using)f(scrollbars,)i(Tk)f(library)f(passes)i(parameters)f -(to)f(the)i(widget)e(asso)q(ciated)i(to)e(the)i(scrollbar)75 -1843 y(\(and)14 b FB(vic)n(e)g(versa)p FD(\).)k(Let)c(us)g(lo)q(ok)f -(at)g(a)h(text)g(widget)f(with)g(an)h(asso)q(ciated)g(scrollbar.)k -(When)c(the)g(scrollbar)g(is)75 1889 y(mo)o(v)o(ed,)g(the)i(command)d -(of)i(the)h(asso)q(ciated)g(widget)f(is)h(in)o(v)o(ok)o(ed)e(to)i(c)o -(hange)f(its)h(view.)23 b(On)15 b(the)h(other)h(side,)75 -1935 y(when)d(bro)o(wsing)f(the)h(con)o(ten)o(t)g(of)f(the)h(text)g -(widget)f(\(with)h(arro)o(ws)f(for)g(example\),)f(the)i(scrollbar)f(is) -h(up)q(dated)75 1980 y(b)o(y)k(calling)e(it's)i(asso)q(ciated)h -(closure.)31 b(Tk)18 b(library)f(passes)j(p)q(osition)d(informations)f -(to)h(scrolling)h(closures.)75 2026 y(This)13 b(informations)d(are)j -(the)h(parameters)f(of)f(the)h(closure.)19 b(Hereafter)14 -b(is)f(an)f(example)g(implemen)o(ting)d(a)k(text)75 2072 -y(widget)h(with)f(a)h(scrollbar)g(\(see)h(the)f(help)g(pages)h(for)e -(details\):)153 2135 y Ft(\(text)18 b('.txt)g(:yscrollc)o(omm)o(an)o(d) -36 b(\(lambda)17 b(l)i(\(apply)f(.scroll)f('set)h(l\)\)\))153 -2180 y(\(scrollbar)e('.scroll)h(:command)f(\(lambda)h(l)i(\(apply)f -(.txt)g('yview)f(l\)\)\))153 2272 y(\(pack)h(.txt)g(:side)g("left"\)) -153 2317 y(\(pack)g(.scroll)f(:fill)h("y")g(:expand)f(#t)i(:side)f -("left"\))75 2497 y Fw(3)67 b(Tk)23 b(bindings)75 2596 -y FG(Bindings)18 b(are)h(Sc)n(heme)e(closures)75 2668 -y FD(The)e(Tk)f Fu(bind)g FD(command)d(asso)q(ciates)16 -b(Sc)o(heme)e(scripts)i(with)e(X)h(ev)o(en)o(ts.)20 b(Starting)15 -b(with)f(v)o(ersion)g(3.0)g(those)75 2714 y(scripts)j(m)o(ust)d(b)q(e)i -(Sc)o(heme)f(closures)661 2699 y Fy(2)681 2714 y FD(.)23 -b(Binding)15 b(closures)i(can)e(ha)o(v)o(e)h(parameters.)22 -b(Those)17 b(parameters)e(are)p 75 2741 705 2 v 121 2768 -a Fr(1)139 2779 y Fq(Old)c(syn)o(tax)f(for)h(callbac)o(ks)e(\(i.e.)15 -b(strings\))9 b(is)j(alw)o(a)o(ys)f(supp)q(orted)e(but)h(its)i(use)f -(is)g(deprecated.)121 2807 y Fr(2)139 2819 y Fq(Old)g(syn)o(tax)f(for)h -(bindings)e(\(i.e.)15 b(strings\))10 b(is)h(no)g(more)f(supp)q(orted.)j -(Old)f(bindings)d(scripts)h(m)o(ust)g(hence)g(b)q(e)i(rewritten.)p -eop -%%Page: 61 61 -61 60 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(61)p 75 64 1763 2 v 75 179 a FD(one)17 b(c)o(har)h(sym)o(b)q(ols)e -(\(with)h(the)h(same)e(con)o(v)o(en)o(tions)h(than)g(the)h(Tcl)f(\045)g -(c)o(har,)h(see)g(the)g Fu(bind)e FD(help)i(page)f(for)75 -224 y(details\).)h(F)m(or)13 b(instance,)i(the)f(follo)o(wing)d(Tcl)j -(script)153 303 y Ft(bind)19 b(.w)f()e -Fn(f)p Ft(puts)i("Press)g(on)h(widget)e(\045W)i(at)g(position)d(\045x)j -(\045y")p Fn(g)75 428 y FD(can)14 b(b)q(e)h(translated)f(in)o(to)153 -507 y Ft(\(bind)k(.w)h("")330 -552 y(\(lambda)e(\(|W|)h(x)h(y\))389 598 y(\(format)e(#t)i("Press)e(on) -i(widget)e(~A)i(at)g(position)d(~A)j(~A\\n")f(|W|)g(x)h(y\)\)\))75 -727 y Fl(Note:)35 b Fs(Usage)14 b(of)f(v)o(erticals)i(bars)f(for)g(the) -f Ft(W)g Fs(sym)o(b)q(ol)i(is)f(necessary)h(here)f(b)q(ecause)h(the)f -(Tk)f(to)q(olkit)i(is)f(case)g(sensitiv)o(e)75 777 y(\()p -Fl(e.g.)9 b Ft(W)i Fs(in)g(bindings)j(is)e(the)f(path)g(name)h(of)e -(the)h(windo)o(w)h(to)f(whic)o(h)g(the)h(ev)o(en)o(t)f(w)o(as)f(rep)q -(orted,)i(whereas)g Ft(w)e Fs(is)h(the)h(width)75 826 -y(\014eld)i(from)f(the)g(ev)o(en)o(t.)75 943 y FG(Bindings)18 -b(are)h(c)n(hained)75 1015 y FD(In)12 b(Tk4.0)e(and)h(later,)h -(bindings)f(are)h(c)o(hained)g(since)g(it)f(is)g(p)q(ossible)h(for)f -(sev)o(eral)h(bindings)f(to)h(matc)o(h)e(a)h(giv)o(en)g(X)75 -1061 y(ev)o(en)o(t.)18 b(If)10 b(the)i(bindings)e(are)h(asso)q(ciated)h -(with)f(di\013eren)o(t)h(tags,)f(then)g(eac)o(h)h(of)e(the)i(bindings)e -(will)f(b)q(e)j(executed,)75 1106 y(in)i(order.)22 b(By)15 -b(default,)f(a)h(class)g(binding)f(will)f(b)q(e)j(executed)h(\014rst,)e -(follo)o(w)o(ed)e(b)o(y)i(a)f(binding)g(for)h(the)g(widget,)75 -1152 y(a)g(binding)g(for)g(its)g(toplev)o(el,)g(and)h(an)f -Fu(all)g FD(binding.)21 b(The)16 b Fu(bindtags)e FD(command)f(ma)o(y)g -(b)q(e)j(used)h(to)e(c)o(hange)75 1198 y(this)h(order)h(for)f(a)g -(particular)g(windo)o(w)g(or)g(to)g(asso)q(ciate)h(additional)d -(binding)i(tags)g(with)g(the)h(windo)o(w)e(\(see)75 1243 -y(corresp)q(onding)h(help)g(page)g(for)f(details\).)23 -b(If)15 b(the)h(result)g(of)f(closure)h(in)g(the)g(bindings)f(c)o(hain) -g(is)g(the)h(sym)o(b)q(ol)75 1289 y Fu(break)p FD(,)c(the)j(next)f -(closures)h(of)f(the)g(c)o(hain)g(are)g(not)g(executed.)20 -b(The)14 b(example)f(b)q(elo)o(w)g(illustrates)h(this:)153 -1368 y Ft(\(pack)k(\(entry)f('.e\)\))153 1414 y(\(bind)h(.e)h -("")d(\(lambda)h(\(|A|\))624 1459 y(\(unless)g -(\(string->n)o(um)o(ber)f(|A|\))i('break\)\)\))75 1588 -y FD(Bindings)e(for)f(the)i(en)o(try)g Fu(.e)e FD(are)i(executed)h(b)q -(efore)e(those)h(for)f(its)g(class)g(\(i.e.)24 b Fu(Entry)p -FD(\).)g(This)15 b(allo)o(ws)g(us)i(to)75 1638 y(\014lter)c(the)g(c)o -(haracters)i(whic)o(h)d(are)h(e\013ectiv)o(ely)h(passed)f(to)g(the)g -Fu(.e)f FD(widget.)17 b(The)d(test)f(in)f(this)h(binding)f(closure)75 -1688 y(breaks)g(the)g(c)o(hain)g(of)f(bindings)g(if)f(the)i(t)o(yp)q -(ed)h(c)o(haracter)f(is)g(not)f(a)h(digit.)k(Otherwise,)d(the)f(follo)o -(wing)d(binding,)75 1737 y(the)16 b(one)f(for)g(the)h -Fu(Entry)e FD(class,)h(is)g(executed)i(and)e(inserts)h(the)g(c)o -(haracter)g(t)o(yp)q(ed)g(\(a)f(digit\).)21 b(Consequen)o(tly)m(,)75 -1787 y(the)14 b(simple)f(previous)h(binding)f(mak)o(es)g -Fu(.e)g FD(a)h(con)o(trolled)f(en)o(try)i(whic)o(h)f(only)f(accepts)i -(in)o(teger)g(n)o(um)o(b)q(ers.)p eop -%%Page: 62 62 -62 61 bop 75 47 a FC(62)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v eop -%%Page: 63 63 -63 62 bop 75 492 a FH(App)s(endix)33 b(B)75 701 y FA(Di\013erences)38 -b(with)h(R4RS)75 918 y FD(This)12 b(app)q(endix)f(summarizes)f(the)i -(main)e(di\013erences)k(b)q(et)o(w)o(een)f(the)f Fz(STk)g -FD(Sc)o(heme)f(implemen)o(tation)d(and)k(the)75 968 y(language)h -(describ)q(ed)j(in)d FB(R)510 953 y Fy(4)522 968 y Fx(RS)r -FD(.)75 1114 y Fw(1)67 b(Sym)n(b)r(ols)75 1208 y Fz(STk)20 -b FD(sym)o(b)q(ol)d(syn)o(tax)j(has)f(b)q(een)i(augmen)o(ted)d(to)h -(allo)o(w)f(case)i(signi\014can)o(t)f(sym)o(b)q(ols.)33 -b(This)20 b(extension)g(is)75 1257 y(discussed)c(in)d(6.4.)75 -1309 y(The)h(follo)o(wing)e(sym)o(b)q(ols)g(are)i(de\014ned)h(in)f(the) -g(global)e(en)o(vironmen)o(t.)137 1407 y Fm(\017)21 b -Fu(*debug*)p FD(.)16 b(Setting)d Fu(*debug*)e FD(to)h -Fu(#t)h FD(prev)o(en)o(ts)h(macro)d(inlining)g(and)h(expression)i(reco) -q(ding)f(\(see)h(6.25\).)137 1496 y Fm(\017)21 b Fu(*gc-verbose*)p -FD(.)c(If)d Fu(*gc-verbose*)d FD(is)j Fu(#t)p FD(,)g(a)g(message)g -(will)f(b)q(e)i(prin)o(ted)f(b)q(efore)i(and)e(after)g(eac)o(h)h(run) -179 1546 y(of)e(garbage)h(collector.)k(The)c(message)g(is)g(prin)o(ted) -g(on)g(the)g(standard)g(error)h(stream.)137 1635 y Fm(\017)21 -b Fu(*load-verbose*)p FD(.)i(If)17 b Fu(*load-verbose*)c -FD(is)k Fu(#t)p FD(,)f(the)i(absolute)e(path)h(name)e(of)h(eac)o(h)i -(loaded)e(\014le)h(is)179 1685 y(prin)o(ted)d(b)q(efore)h(its)f -(e\013ectiv)o(e)h(reading.)j(File)13 b(names)g(are)i(prin)o(ted)f(on)f -(the)i(standard)f(error)h(stream.)137 1774 y Fm(\017)21 -b Fu(*load-path*)13 b FD(m)o(ust)h(con)o(tain)h(a)f(list)h(of)g -(strings.)22 b(Eac)o(h)16 b(string)f(is)g(tak)o(en)g(as)h(a)f -(directory)g(path)h(name)179 1824 y(in)d(whic)o(h)h(a)f(\014le)h(will)e -(b)q(e)i(searc)o(hed)i(for)d(loading.)j(This)e(v)n(ariable)e(can)i(b)q -(e)h(set)f(automatically)d(from)h(the)179 1874 y Fu(STK)p -248 1874 14 2 v 15 w(LOAD)p 351 1874 V 15 w(PATH)h FD(shell)h(v)n -(ariable.)i(See)f Fu(stk\(1\))e FD(for)g(more)g(details.)137 -1963 y Fm(\017)21 b Fu(*load-suffixes*)14 b FD(m)o(ust)i(con)o(tain)g -(a)h(list)g(of)f(strings.)28 b(When)17 b(the)h(system)f(try)g(to)g -(load)f(a)h(\014le)g(in)g(a)179 2013 y(giv)o(en)d(directory)i -(\(according)f(to)f Fu(*load-path*)f FD(v)n(alue\),)h(it)g(will)g -(\014rst)h(try)h(to)e(load)g(it)h(without)f(su\016x.)179 -2063 y(If)f(this)h(\014le)g(do)q(es)g(not)g(exist,)g(the)g(system)g -(will)e(sequen)o(tially)h(try)h(to)g(\014nd)g(the)g(\014le)g(b)o(y)f -(app)q(ending)h(eac)o(h)179 2113 y(su\016x)g(of)f(this)h(list.)j(A)d(t) -o(ypical)f(v)n(alue)h(for)f(this)h(v)n(ariable)f(ma)o(y)f(b)q(e)i -Fu(\("stk")21 b("stklos")f("scm")h("so"\))p FD(.)137 -2202 y Fm(\017)g Fu(*help-path*)13 b FD(m)o(ust)h(con)o(tain)h(a)f -(list)h(of)g(strings.)22 b(Eac)o(h)16 b(string)f(is)g(tak)o(en)g(as)h -(a)f(directory)g(path)h(name)179 2252 y(in)e(whic)o(h)g(do)q(cumen)o -(tation)f(\014les)i(are)f(searc)o(hed.)21 b(This)14 b(v)n(ariable)g -(can)g(b)q(e)h(set)g(automatically)c(from)i(the)179 2302 -y Fu(STK)p 248 2302 V 15 w(HELP)p 351 2302 V 15 w(PATH)g -FD(shell)h(v)n(ariable.)i(See)f Fu(stk\(1\))e FD(for)g(more)g(details.) -137 2391 y Fm(\017)21 b Fu(*argc*)11 b FD(con)o(tains)h(the)h(n)o(um)o -(b)q(er)f(of)g(argumen)o(ts)f(\(0)h(if)g(none\),)h(not)f(including)f -(in)o(terpreter)j(options.)k(See)179 2441 y Fu(stk\(1\))12 -b FD(for)i(more)f(details.)137 2530 y Fm(\017)21 b Fu(*argv*)14 -b FD(con)o(tains)i(a)f(Sc)o(heme)h(list)f(whose)h(elemen)o(ts)g(are)g -(the)h(argumen)o(ts)e(\(not)g(including)g(the)h(in)o(ter-)179 -2580 y(preter)h(options\),)e(in)g(order,)h(or)f(an)g(empt)o(y)g(list)g -(if)f(there)j(are)f(no)f(argumen)o(ts.)22 b(See)16 b -Fu(stk\(1\))e FD(for)h(more)179 2630 y(details.)137 2719 -y Fm(\017)21 b Fu(*program-name*)12 b FD(con)o(tains)i(the)i(\014le)e -(name)g(sp)q(eci\014ed)i(with)f(the)g Fu(-file)f FD(option,)f(if)h -(presen)o(t.)22 b(Other-)179 2769 y(wise,)13 b(it)h(con)o(tains)f(the)i -(name)d(through)i(whic)o(h)f(the)i(in)o(terpreter)g(w)o(as)f(in)o(v)o -(ok)o(ed.)j(See)e Fu(stk\(1\))d FD(for)h(more)179 2819 -y(details.)935 2924 y(63)p eop %%Page: 64 64 -64 63 bop 75 47 a FC(64)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v 137 179 a Fm(\017)21 b Fu(*print-banner*)p -FD(.)f(If)c Fu(*print-verbose*)c FD(is)k Fu(#f)p FD(,)f(the)i(usual)e -(cop)o(yrigh)o(t)g(message)h(is)f(not)h(displa)o(y)o(ed)179 -229 y(when)e(the)h(in)o(terpreter)g(is)f(started.)137 -312 y Fm(\017)21 b Fu(*root*)12 b FD(designates)j(the)g(Tk)f(main)e -(windo)o(w)h(\(see)i(A-2\).)j(This)c(v)n(ariable)f(is)h(not)g(set)h(if) -e(the)i(Tk)f(to)q(olkit)179 362 y(is)g(not)f(initialized.)75 -499 y Fw(2)67 b(T)n(yp)r(es)75 590 y Fz(STk)17 b FD(implemen)o(ts)d -(all)i(the)h(t)o(yp)q(es)h(de\014ned)g(as)f(mandatory)e(in)h -FB(R)1142 575 y Fy(4)1154 590 y Fx(RS)r FD(.)27 b(Ho)o(w)o(ev)o(er,)18 -b(complex)d(n)o(um)o(b)q(ers)i(and)75 640 y(rational)12 -b(n)o(um)o(b)q(ers)h(\(whic)o(h)g(are)h(de\014ned)g(but)g(not)f -(required)h(in)f FB(R)1130 625 y Fy(4)1142 640 y Fx(RS)r -FD(\))h(are)g(not)f(implemen)o(ted.)j(The)d(lac)o(k)g(of)75 -690 y(these)i(t)o(yp)q(es)g(implies)d(that)i(some)f(functions)h(of)f -FB(R)882 675 y Fy(4)894 690 y Fx(RS)k FD(are)d(not)g(de\014ned.)75 -740 y(Some)d(t)o(yp)q(es)h(whic)o(h)g(are)g(not)g(de\014ned)h(in)e -FB(R)764 725 y Fy(4)776 740 y Fx(RS)j FD(are)f(implem)o(en)o(ted)d(in)h -Fz(STk)p FD(.)18 b(Those)12 b(t)o(yp)q(es)h(are)f(listed)g(b)q(elo)o -(w:)137 823 y Fm(\017)21 b FD(input)13 b(string)h(p)q(ort)h(t)o(yp)q(e) -f(\(6.10\))137 906 y Fm(\017)21 b FD(output)14 b(string)g(p)q(ort)g(t)o -(yp)q(e)g(\(6.10\))137 990 y Fm(\017)21 b FD(k)o(eyw)o(ord)14 -b(t)o(yp)q(e)g(\(6.11\))137 1073 y Fm(\017)21 b FD(Tk)14 -b(command)d(t)o(yp)q(e)j(\(6.12\))137 1156 y Fm(\017)21 -b FD(en)o(vironmen)o(t)13 b(t)o(yp)q(e)h(\(6.14\))137 -1239 y Fm(\017)21 b FD(macro)12 b(t)o(yp)q(e)j(\(6.15\))137 -1323 y Fm(\017)21 b FD(address)15 b(t)o(yp)q(e)f(\(6.17\))137 -1406 y Fm(\017)21 b FD(hash)14 b(table)g(t)o(yp)q(e)g(\(6.19\))137 -1489 y Fm(\017)21 b FD(Regular)13 b(expression)i(t)o(yp)q(e)f(\(6.20\)) -137 1573 y Fm(\017)21 b FD(pro)q(cess)15 b(t)o(yp)q(e)g(\(6.22\))137 -1656 y Fm(\017)21 b FD(so)q(c)o(k)o(et)15 b(t)o(yp)q(e)f(\(6.23\))75 -1794 y Fw(3)67 b(Pro)r(cedures)75 1885 y FD(The)14 b(follo)o(wing)d -(pro)q(cedures)16 b(are)e(required)g(b)o(y)g FB(R)863 -1870 y Fy(4)875 1885 y Fx(RS)i FD(and)d(are)h(not)g(implem)o(en)o(ted)e -(in)h(the)h Fz(STk)g FD(in)o(terpreter.)137 1968 y Fm(\017)21 -b FD(transcript-o\013)137 2051 y Fm(\017)g FD(transcript-on)75 -2134 y Fu(Transcript-off)9 b FD(and)k Fu(transcript-on)c -FD(can)k(b)q(e)g(sim)o(ulated)d(with)i(v)n(arious)g(Unix)g(to)q(ols)g -(suc)o(h)h(as)f Fu(script)f FD(or)75 2184 y Fu(fep)p -FD(.)75 2269 y(The)i(follo)o(wing)d(pro)q(cedures)15 -b(are)e(not)f(implemen)o(ted)f(in)h(the)h Fz(STk)g FD(in)o(terpreter)h -(whereas)g(they)f(are)g(de\014ned)h(in)75 2319 y FB(R)105 -2304 y Fy(4)117 2319 y Fx(RS)j FD(\(but)d(not)g(required\).)19 -b(They)14 b(are)g(all)f(related)h(to)g(complex)f(or)h(rational)e(n)o -(um)o(b)q(ers.)137 2402 y Fm(\017)21 b FD(n)o(umerator)137 -2486 y Fm(\017)g FD(denominator)137 2569 y Fm(\017)g -FD(rationalize)137 2652 y Fm(\017)g FD(mak)o(e-rectangular)137 -2736 y Fm(\017)g FD(mak)o(e-p)q(olar)137 2819 y Fm(\017)g -FD(real-part)p eop -%%Page: 65 65 -65 64 bop 75 47 a Fz(STk)16 b FC(Reference)f(Man)o(ual)1235 -b(65)p 75 64 1763 2 v 137 179 a Fm(\017)21 b FD(imag-part)137 -262 y Fm(\017)g FD(magnitude)137 345 y Fm(\017)g FD(angle)p +64 63 bop 37 45 a FE(64)1262 b FB(STk)17 b FE(Reference)g(Man)o(ual)p +37 64 1838 2 v 37 190 a Fw(\(bye)24 b FD(r)n(etc)n(o)n(de)s +Fw(\))1358 b FF(pro)q(cedure)37 247 y Fw(\(bye\))1522 +b FF(pro)q(cedure)37 327 y(Exits)17 b(the)f FB(STk)f +FF(in)o(terpreter)h(with)h(the)f(sp)q(eci\014ed)i(in)o(teger)e(return)g +(co)q(de.)23 b(If)17 b(omitted,)f(the)g(in)o(terpreter)37 +383 y(terminates)g(with)f(a)g(return)g(co)q(de)h(of)f(0.)p eop +%%Page: 65 65 +65 64 bop 809 1056 a FJ(P)m(art)32 b(I)s(I)741 1264 y +FC(Annexes)934 2901 y FF(65)p eop %%Page: 66 66 -66 65 bop 75 47 a FC(66)1236 b Fz(STk)17 b FC(Reference)d(Man)o(ual)p -75 64 1763 2 v eop +66 65 bop eop %%Page: 67 67 -67 66 bop 75 491 a FH(App)s(endix)33 b(C)75 699 y FA(An)38 -b(in)m(tro)s(duction)g(to)h Fe(STklos)75 941 y Fw(1)67 -b(In)n(tro)r(duction)75 1034 y Fz(STklos)14 b FD(is)e(the)h(ob)r(ject)h -(orien)o(ted)f(la)o(y)o(er)f(of)g Fz(STk)p FD(.)18 b(Its)13 -b(implemen)o(tatio)o(n)d(is)j(deriv)o(ed)g(from)e(v)o(ersion)h(1.3)g -(of)g(the)75 1084 y(Gregor)h(Kic)o(kzales)g(Tin)o(y)f(Clos)g(pac)o(k)n -(age)g([12)o(].)17 b(Ho)o(w)o(ev)o(er,)c(it)f(has)h(b)q(een)h(extended) -g(to)e(b)q(e)i(as)e(close)i(as)e(p)q(ossible)75 1133 -y(to)17 b(CLOS,)g(the)h(Common)c(Lisp)j(Ob)r(ject)i(System[6)o(].)28 -b(Some)16 b(features)i(of)f Fz(STklos)i FD(are)e(also)g(issued)h(from) -75 1183 y(Dylan[13)n(])13 b(or)h(SOS[14].)75 1234 y(Brie\015y)d -(stated,)g(the)g Fz(STklos)h FD(extension)f(giv)o(es)f(the)h(user)g(a)g -(full)e(ob)r(ject)i(orien)o(ted)g(system)f(with)g(meta-classes,)75 -1284 y(m)o(ultiple)j(inheritance,)i(generic)h(functions)g(and)f(m)o -(ulti-m)o(etho)q(ds.)k(F)m(urthermore,)c(the)h(whole)f(implem)o(en)o -(ta-)75 1333 y(tion)i(relies)h(on)f(a)h(true)g(meta)e(ob)r(ject)j -(proto)q(col,)f(in)f(the)h(spirit)f(of)g(the)h(one)g(de\014ned)h(for)e -(CLOS[15)o(].)29 b(This)75 1383 y(mo)q(del)12 b(has)h(also)f(b)q(een)i -(used)g(to)f(em)o(b)q(o)q(dy)f(the)i(prede\014ned)h(Tk)e(widgets)g(in)g -(a)g(hierarc)o(h)o(y)g(of)g Fz(STklos)h FD(classes.)75 -1433 y(This)i(set)h(of)f(classes)h(p)q(ermits)f(to)g(simplify)e(the)j -(core)g(Tk)f(usage)g(b)o(y)g(pro)o(viding)f(homogeneous)h(accesses)j -(to)75 1483 y(widget)e(options)h(and)f(b)o(y)h(hiding)e(the)i(lo)o(w)f -(lev)o(el)g(details)h(of)f(Tk)g(widgets,)h(suc)o(h)h(as)f(naming)d(con) -o(v)o(en)o(tions.)75 1533 y(F)m(urthermore,)j(as)g(exp)q(ected,)i -(using)e(of)f(ob)r(jects)i(facilitates)e(co)q(de)i(reuse)g(and)e -(de\014nition)h(of)f(new)h(widgets)75 1583 y(classes.)75 -1633 y(The)e(purp)q(ose)i(of)d(this)h(app)q(endix)g(is)g(to)g(in)o(tro) -q(duce)h(brie\015y)f(the)g Fz(STklos)h FD(pac)o(k)n(age)f(and)g(in)g -(no)f(case)i(will)e(it)75 1683 y(replace)e(the)f Fz(STklos)h -FD(reference)h(man)o(ual)