From: <>
Date: Mon, 06 Feb 95 17:48:32 +0100

>From now on, I will mail the FAQ monthly to the mailing list. This
will usualy be at the begining of the month. I need feed back on it, so
please e-mail any comments. The STklos section is still very poor I need
first class ;) advise here. If you find this FAQ should be posted to a
usenet newsgroup let me know. As usual the FAQ is accessible through


Furrer Marc 		    EPFL DI-LTI, 1015 Lausanne, Suisse      +41 21 693 29 07 / 66 00 (Fax)
;;; ****************************************************************
;;; Answers to Frequently Asked Questions about STk    *************
;;; ****************************************************************
;;; Written by Marc Furrer
;;; with the extensive support from Erick Gallesio
;;; FAQ-STk
;;; $Date: 1995/02/06 16:37:15 $
;;; $Revision: 1.4 $
This is the STk FAQ. 
If you think of questions that are appropriate for this FAQ, or would
like to improve an answer, please send e-mail to me at 
+++ Copyright +++
Copyright (c) 1995 by Marc Furrer and Erick Gallesio 
All rights reserved. 
This FAQ may be freely redistributed in its entirety without
modification provided that this copyright notice is not removed.  It
may not be sold for profit or incorporated in commercial documents
(e.g., published for sale on CD-ROM, floppy disks, books, magazines,
or other print form) without the prior written permission of the
copyright holder.  Permission is expressly granted for this document
to be made available for file transfer from installations offering
unrestricted anonymous file transfer on the Internet. 
This article is provided AS IS without any express or implied
+++ Introduction +++
STk is a scheme interpreter, with embedded support for the Tk graphical
package. It is as GUI friendly as Tk/Tcl, with the programming beauty of
Scheme ;-). 
This file tries to answer most frequently asked question about
STk. It isn't a Scheme course nor a Tk course. 
If you don't find an answer that should be here, please drop an e-mail
to, with your question and, if possible, the
+++ Table of Contents +++
  [1.-] Generalities about STk
    [1.0] What is STk
    [1.1] Where do I get STk from
    [1.2] Where do I get the latest version of the FAQ
    [1.3] The STk Mailing List
    [1.4] Reporting a Bug
    [1.5] Getting more information about Scheme
    [1.6] Getting more information about Tk
  [2.-] What's making STk the Scheme interpreter you need
    [2.0] Differences with R4RS
    [2.1] Added Features
    [2.2] Contributed Packages
  [3.-] Why & How ? ... Trick and Treat with STk
    [3.0] Using STk from Emacs
    [3.1] Using the SLIB package with STk
    [3.2] the -geometry flag doesnt work'
    [3.3] Using lambda as call-backs
  [4.-] STklos,the STk object oriented extension to Scheme
    [4.0] STklos: Principle
    [4.1] STklos: Common traps
Subject :       [1.0] What is STk
STk is a R4RS Scheme interpreter which can access to the Tk graphical package.
Conversely it can be seen as the John Ousterhout's Tk package where
the Tcl language has been replaced by Scheme. 
STk also, provides an efficient object oriented system called STklos. 
STklos is a full OO system with multi-inheritance, generic functions,
multi-methods and a true meta object protocol). STklos can be dynamically
loaded on systems which support this feature. 
Subject :       [1.1] Where do I get STk from
STk distribution is available on various sites. The original
distribution site is ( Files are
available through anonymous ftp and are located in the /pub
directory. Distribution file names have the form STk-x.y.tar.gz, where
x and y represent the version and the release of the package. You can
also find interim releases of STk. Intermediate releases are stored in
file whose name have the form STk-x.y.z.tar.gz where z is the
intermediate release number.
Subject :       [1.2] Where do I get the latest version of the FAQ
Latest version of the FAQ can be found at:
    + <> for the html version
    + <> for the ASCII one.
Currently the FAQ is not archived elsewhere. 
Subject :       [1.3] The STk Mailing List
There is a mailing list for STk located on  The
intent of this mailing list is to permit to STk users to share
experiences, expose problems, submit ideas and everything which you
find interesting (and which is related to STk). 
To subscribe to the mailing list, simply send a message with the word
subscribe in the Subject: field of you mail.  Mail must be sent to the
following address: 
To unsubscribe from the mailing list, send a mail at previous e-mail
address with the word unsubscribe in the Subject: field. 
For more information on the mailing list management send a message
with the word help in the Subject: field of your mail. In particular,
it is possible to find all the messages which have already been sent
on the STk mailing list. 
Subscription/un-subscription/information requests are processed
automatically without human intervention. If you something goes wrong,
send a mail to 
Once you have properly subscribe to the mailing list, 
        + you can send your messages about STk to,
        + you will receive all the messages of the mailing list to the e-mail 
          address you used when you subscribed to the list.
The mailing list is archived at: 
Subject :       [1.4] Reporting a Bug
When you find a bug in STk, please send its description to the
following address Don't forget to indicate
the version you use and the architecture the system is compiled on.
Stk version and architecture can be found by using the version and
machine-type Scheme primitives. If possible, try to find a small
program which exhibit the bug.
Subject :       [1.5] Getting more information about Scheme
+++ The R4RS document +++
R4RS is the document which fully describe the Scheme Programming
Language, it can be found in the Scheme repository in the directory:
Aubrey Jaffer has also translated this document in HTML. A version of this 
document is available at
+++ The Scheme Repository +++
The main site where you can find (many) informations about Scheme is
located in the University of Indiana. The Scheme repository is
maintained by David Eby.  The repository currently consists of the
following areas:
        + Lots of scheme code meant for benchmarking, library/support, 
          research, education, and fun. 
        + On-line documents: Machine readable standards documents, standards 
          proposals, various Scheme-related tech reports, conference
          papers, mail 
          archives, etc. 
        + Most of the publicly available Scheme Implementations. 
        + Material designed primarily for instruction. 
        + Freely-distributable promotional or demonstration material for 
          Scheme-related products. 
        + Utilities (e.g., Schemeweb, SLaTeX). 
        + Extraneous stuff, extensions, etc. 
You can access the Scheme repository at:
        + <>
        + <>
The Scheme Repository is mirrored in Europe at: 
        + <>
        + <>
        + <
+++ Usenet newsgroup and other addresses +++
There is a usenet newsgroup about the Scheme Programming language:
Following addresses contains also material about the Scheme language
        + The Scheme FAQ
        + The Scheme Home Page at at MIT
        + The Scheme Underground web page
Subject :       [1.6] Getting more information about Tk
The reference about Tk is probably Ousterhout's book :
        "Tcl and the Tk Toolkit"
of course, you better not read the chapters about Tcl ;-)
Subject :       [2.0] Differences with R4RS
+++ Symbols +++
STk symbol syntax has been augmented to allow case significant
many global symbols have been added to the global environment, see 
Appendix B of the STk Reference Manual. 
+++ Types +++
STk implements all the types defined as mandatory in R4RS. However, complex
numbers and rational numbers (which are defined but not required in R4RS) are
not implemented. The lack of these types implies that some functions of
R4RS are not defined. 
Some types which are not defined in R4RS are implemented in STk. Those 
types are listed below:
        + input string port type
        + output string port type
        + keyword type
        + Tk command type
        + environment type
        + macro type
        + address type
        + hash table type
+++ Procedures +++
The following procedures are required by R4RS and are not implemented in the
STk interpreter. 
        + char-ready?
        + transcript-off
        + transcript-on
Procedure char-ready? will be implemented in a future version.
Transcript-off and transcript-on can be simulated with various Unix
tools such as script or fep. 
The following procedures are not implemented in the STk interpreter whereas
they are defined in R4RS (but not required). They are all 
related to complex or rational numbers.
        + numerator
        + denominator
        + rationalize
        + make-rectangular
        + make-polar
        + real-part
        + magnitude
        + angle
This is more detailed in the Appendix B of the STk Reference Manual.
Subject :       [2.1] Added Features
feature you will probably not find elsewhere.
        + dynamic loading of C module
        + ease of making C extension
        + ...
Subject :       [2.2] Contributed Packages
among the package coming with STk we shall mention :
        + socket package
          allow access to the UNIX systems sockets
        + regexp package
          give access to the regular expression of Tk/Tcl
        + time package
          give access to the time function of an Unix box
you also have access to the SLIB package developed by Aubrey Jaffer.
Subject :       [3.0] Using STk from Emacs
There are several ways to call stk from Emacs. One simple way consists to add
the following lines in your file $HOME/.emacs
(setq-default auto-mode-alist (append auto-mode-alist 
				      ("\\.stk$"    . scheme-mode)
				      ("\\.stklos$" . scheme-mode)))
;; Use cmu-scheme rather than xscheme (xscheme is wired with CScheme)
(autoload 'run-scheme "cmuscheme" "Run an inferior Scheme" t)
(setq scheme-program-name "stk")
(setq scheme-mode-hook 
	 (autoload 'run-scheme "cmuscheme" "Run an inferior Scheme" t)
	 (setq scheme-program-name "stk")
	 ;; Comment the two following lines if you don't want Font-locking
	 (setq font-lock-keywords '(":[-a-zA-Z0-9]*"))
(setq inferior-scheme-mode-hook '(lambda() (split-window)))
Another way consists to use a special purpose STk mode. You can find two
such modes in the /pub/Contrib directory of
Subject :       [3.1] Using the SLIB package with STk
Aubrey Jaffer maintains a package called SLIB which is a portable
Scheme library which provides compatibility and utility functions for
all standard scheme implementations. To use this package, you have
just to type :
        (require "slib")
and follow the instructions given in the SLIB library to use a
particular package.
Subject :       [3.2] the -geometry flag doesnt work'
the -geometry flag just put the geometry parameter in *geometry* you
have to use it yourself, for instance with:
 (wm 'geometry "." *geometry*)
NB: in fact this is a bug that shall be corrected in 2.1.6
Subject :       [3.3] Using lambda as call-backs
Using something like 
   (.scrollbar 'configure :command '(lambda (pos) (display pos)))
won't work. This is due to the way Tk and STk communicate. For the
time being the call-back command are stored in strings. When Tk calls
the call-back, the string is sent to STk, if the string doesn't start
with a bracket it is bracketed first. Thus
    :command "callback"            is called by   (callback args)
    :command '(lambda (pos) ...)   is called by (lambda ...) args
      which is obviously false.
    :command "apply (lambda ....)" is called by (apply (lambda..) args)
      which the only current working alternative.
Eventually, this problem will be solved in future release.
Subject :       [4.0] STklos: Principle
STklos is the object oriented extension to STk. It is based on
TinyClos. It provides an easy access to Tk widgets in a OO fashion.
It supports a meta-object protocol a la Clos.
Subject :       [4.1] STklos: Common traps
There are some limitation in using STklos with Tk. This is inherent
to the way Tk communicate with the underlying interpreter.
Below is the list of known limitations :
   + ....
      [to be completed later]
Comment to be directed to
Received on Mon Feb 06 1995 - 17:49:55 CET

This archive was generated by hypermail 2.3.0 : Mon Jul 21 2014 - 19:38:59 CEST