Archive-name: scheme-faq/part1
Last-Modified: Fri Mar 12 16:57:50 1993 by Mark Kantrowitz
Version: 1.0
;;; ****************************************************************
;;; Answers to Frequently Asked Questions about Scheme *************
;;; ****************************************************************
;;; Written by Mark Kantrowitz and Barry Margolin
;;; scheme-faq-1.text -- 51113 bytes
This post contains the Scheme FAQ.
If you think of questions that are appropriate for this FAQ, or would
like to improve an answer, please send email to us at ········@think.com.
Note that the lisp-faq mailing list is for discussion of the content
of the FAQ posting only. It is not the place to ask questions about Scheme;
use either the ······@ai.mit.edu mailing list or the comp.lang.scheme
newsgroup (······@mc.lcs.mit.edu) for that. If a question appears frequently
in one of those forums, it will get added to the FAQ list.
Topics Covered:
[1-0] What is the purpose of this newsgroup?
[1-1] What Scheme-related discussion groups and mailing lists exist?
[1-2] What is the difference between Scheme and Common Lisp?
[1-3] What documentation is available on Scheme? How can I learn Scheme?
[1-4] Where can I learn about implementing Scheme interpreters and
compilers?
[1-5] Free Scheme implementations.
[1-6] Commercial Scheme implementations.
[1-7] Standards for Scheme -- What are R4RS and IEEE P1178?
[1-8] How do I do object-oriented programming in Scheme?
[1-9] Repositories of Scheme Software
[1-10] Publicly Redistributable Scheme Software
[1-11] Where can I get an implementation of Prolog in Scheme?
[1-12] What does SICP, SCOOPS, R4RS, CAR, CDR, ... mean?
Search for \[#\] to get to question number # quickly.
Recent Changes:
;;; 8-FEB-93 mk Created, by removing pieces from the Lisp FAQ posting.
;;; 17-FEB-93 mk Fixed YASOS entry and added SCOOPS entry.
;;; 12-MAR-93 mk Fixed Scheme/CL comparison to be R4RS compliant and
;;; efficient.
Introduction:
Certain questions and topics come up frequently in the various network
discussion groups devoted to and related to Scheme. This file/article is
an attempt to gather these questions and their answers into a convenient
reference for Scheme programmers. It (or a reference to it) is posted
periodically. The hope is that this will cut down on the user time and
network bandwidth used to post, read and respond to the same questions
over and over, as well as providing education by answering questions
some readers may not even have thought to ask.
This is not a Scheme tutorial, nor is it an exhaustive list of all Scheme
intricacies. Scheme is a very powerful and expressive language, but with
that power comes many complexities. This list attempts to address the
ones that average Scheme programmers are likely to encounter. If you are
new to Scheme, see the answer to the question "How can I learn
Scheme?" [1-3].
The latest version of this file is available via anonymous FTP from CMU
and Thinking Machines:
To obtain the file from CMU, connect by anonymous ftp to any CMU CS
machine (e.g., ftp.cs.cmu.edu [128.2.206.173]), using username
"anonymous" and password ·····@host". The file scheme-faq-1.text
is located in the directory
/afs/cs.cmu.edu/user/mkant/Public/Lisp/
[Note: You must cd to this directory in one atomic operation, as
some of the superior directories on the path are protected from
access by anonymous ftp.] If your site runs the Andrew File System,
you can just cp the files directly without bothering with FTP.
To obtain the files from Thinking Machines, ftp them from ftp.think.com,
in the directory /public/think/lisp/. The file scheme-faq.text contains
the latest version of the Scheme FAQ. In addition, specific
versions of the FAQ are available as scheme-faq-<version>.text.
We've tried to minimize the overlap with the FAQ postings to the
comp.lang.lisp, comp.lang.clos and comp.ai newsgroups, so if you don't
find what you're looking for here, we suggest you try the FAQs for
those newsgroups. These FAQs should be available by anonymous ftp from
rtfm.mit.edu (18.172.1.27) in the lisp-faq/, ai-faq/ and scheme-faq/
subdirectories of /pub/usenet/news.answers/ or by email. For
instructions on email retrieval, send a mail message to
···········@rtfm.mit.edu with "help" and "index" on separate lines in
the body of the message.
----------------------------------------------------------------
Subject: [1-0] What is the purpose of this newsgroup?
The newsgroup comp.lang.scheme exists for general discussion of
topics related to the programming language Scheme. For example, possible
topics can include (but are not necessarily limited to):
announcements of Scheme books and products
discussion of programs and utilities written in Scheme
discussion of portability issues
questions about possible bugs in Scheme implementations
problems porting an implementation to some architecture
Postings should be of general interest to the Scheme community. See also
question [1-1].
Questions about Common Lisp should be directed to the newsgroup
comp.lang.lisp. Discussion of object oriented programming in Lisp to
the newsgroup comp.lang.clos. Discussion of functional programming
language issues in general should be directed to the newsgroup
comp.lang.functional. Discussion of AI programs implemented in Scheme
should sometimes be cross-posted to the newsgroup comp.ai.
----------------------------------------------------------------
Subject: [1-1] What Scheme-related discussion groups and mailing lists exist?
Before posting to any discussion group, please read the rest
of this FAQ, to make sure your question isn't already answered.
See the Lisp FAQ for a list of Lisp-related discussion groups and
mailing lists. We list here only those newsgroups and mailing lists
directly associated with Scheme.
Newsgroups:
comp.lang.scheme General Scheme-related discussion.
This newsgroup is gatewayed to the
······@mc.lcs.mit.edu mailing list.
comp.lang.scheme.c Discussion of C-Scheme, a scheme dialect.
This newsgroup is gatewayed to the
············@zurich.ai.mit.edu mailing list.
comp.lang.lisp.x Discussion of XLISP, a dialect of Lisp, and XScheme.
comp.lang.dylan Discussion of Dylan (see [4-6]), Apple's
new Scheme-like programming language. Gatewayed to
··········@cambridge.apple.com.
We list several mailing lists below. In general, to be added to
a mailing list, send mail to the "-request" version of the address.
This avoids flooding the mailing list with annoying and trivial
administrative requests. [To subscribe to info-mcl, info-dylan, or
other mailing lists based at cambridge.apple.com, send a message to
·········@cambridge.apple.com with "subscribe <list_name>" in the
message body. Likewise use "unsubscribe <list_name>" to cancel your
subscription and "help" to get help.]
General Scheme Mailing Lists:
······@mc.lcs.mit.edu Discussion of Scheme. Gatewayed to
the comp.lang.scheme newsgroup.
······@ai.mit.edu General discussion about Scheme.
Particular Flavors of Scheme:
············@altdorf.ai.mit.edu,
············@zurich.ai.mit.edu C-Scheme. Gatewayed to the
comp.lang.scheme.c newsgroup.
·········@cs.yale.edu T, a dialect of Scheme.
·············@mc.lcs.mit.edu PseudoScheme
··········@cambridge.apple.com Dylan
----------------------------------------------------------------
Subject: [1-2] What is the difference between Scheme and Common Lisp?
Scheme is a dialect of Lisp that stresses conceptual elegance and
simplicity. It is specified in R4RS and IEEE standard P1178. (See
question [1-7] for details on standards for Scheme.) Scheme is much
smaller than Common Lisp; the specification is about 50 pages,
compared to Common Lisp's 1300 page draft standard. (See the Lisp FAQ
for details on standards for Common Lisp.) Advocates of Scheme often
find it amusing that the entire Scheme standard is shorter than the
index to Guy Steele's "Common Lisp: the Language, 2nd Edition".
Scheme is often used in computer science curricula and programming
language research, due to its ability to represent many programming
abstractions with its simple primitives. Common Lisp is often used for
real world programming because of its large library of utility
functions, a standard object-oriented programming facility (CLOS), and
a sophisticated condition handling system.
See question [1-8] for information about object-oriented programming
in Scheme.
In Common Lisp, a simple program would look something like the
following:
(defun fact (n)
(if (< n 2)
1
(* n (fact (1- n)))))
In Scheme, a simple program would look something like the following:
(define fact
(lambda (n)
(letrec ((tail-recursive-fact
(lambda (counter accumulator)
(if (> counter n)
accumulator
(tail-recursive-fact (+ counter 1)
(* counter accumulator))))))
(tail-recursive-fact 1 1))))
Note that the Scheme version could be written similarly to the Common
Lisp version, but the code above stresses the typical style used by
experienced Scheme programmers. Likewise, the Common Lisp one could be
written in the same manner as the Scheme version, but using LABELS
instead of LETREC.
----------------------------------------------------------------
Subject: [1-3] What documentation is available on Scheme?
How can I learn Scheme?
Introductions to Scheme:
1. Harold Abelson and Gerald Jay Sussman, with Julie Sussman.
"Structure and Interpretation of Computer Programs"
MIT Press (Cambridge, MA) and McGraw-Hill (New York), 1985.
542 pages. ISBN 0-262-01077-1
Starts off introductory, but rapidly gets into powerful
Lisp-particular constructs, such as using closures and
engines, building interpreters, compilers and
object-oriented systems. Often referred to by its acronym,
SICP, which is pronounced "Sick-Pee". MIT problem sets
are available from the repositories, and materials from
Gustavus Adolphus College are available from ftp.gac.edu:pub/SICP/.
2. Daniel P. Friedman and M. Felleisen.
"The Little LISPer"
MIT Press (Cambridge, MA), 3rd printing, 1989. ISBN 0-262-56038-0.
Science Research Associates (Chicago), 3rd ed, 1989. 206 pages.
Good for a quick introduction. Uses Scheme instead of
Common Lisp. (The book uses a dialect of Scheme with
footnotes about translating to Scheme or Common Lisp. The
footnotes won't allow a non-expert to use Common Lisp for
the advanced chapters because of the complexity.)
3. George Springer and Daniel P. Friedman
"Scheme and the Art of Programming"
MIT Press and McGraw Hill, 1990, 596 pages.
Introduces basic concepts of programming in Scheme. Also deals
with object oriented programming, co-routining, continuations.
Gives numerous examples. Source code from the chapters is
available from the nexus.yorku.ca repository in pub/scheme/lit/sap/.
4. Wolfgang Kreutzer and Bruce McKenzie
"Programming for Artificial Intelligence:
Methods, Tools and Applications"
Addison-Wesley (Reading, MA), 1990. 682 pages.
ISBN 0-201-41621-2.
Discusses Scheme, Prolog, and Smalltalk, gives an overview of
the history and philosophy of AI, surveys three major
programming paradigms (procedural, declarative, and
object-oriented), and metaphors to AI programming.
Source code from the chapters is available from
nexus.yorku.ca in pub/scheme/lit/ as aibook.tar.Z. Some of
the programs will only run under MacScheme.
5. Smith, Jerry D.
"Introduction to Scheme"
Prentice Hall (Englewood Cliffs, NJ), 1988, 324 pages.
Focuses on PC Scheme.
6. Michael Eisenberg
"Programming in Scheme"
Scientific Press (Redwood City, CA), 1988. 304 pages.
7. The Ken Dickey article, "The Scheme Programming Language", in
COMPUTER LANGUAGES magazine, June 1992, is available from the
Scheme Repository at nexus.yorku.ca:/pub/scheme/txt/intro.txt
The Revised^4 Report on the Algorithmic Language Scheme is also
available from the Scheme Repository.
8. Two articles in BYTE Magazine, February 1988, by Abelson and
Sussman, and Clinger.
9. The Info files from the MIT Scheme implementation.
General Scheme reference books include:
1. K. Dybvig
"The Scheme programming language"
Prentice Hall, 1987.
Good reference for Scheme.
Scheme-related periodicals include:
1. LISP Pointers.
Published by ACM SIGPLAN six times a year. Volume 1, Number 1
was April-May 1987.
Subscriptions: ACM Members $12; ACM Student Members $7; Non-ACM
members $25. Mail checks payable to the ACM to ACM Inc., PO Box
12115, Church Street Station, New York, NY 10249.
2. LISP and Symbolic Computation, Kluwer Academic Press. Volume 1
was published in 1989. (···@lucid.com is the editor). ISSN 0892-4635.
Subscriptions: Institutions $169; Individuals $80. Add $8 for
air mail. Kluwer Academic Publishers, PO Box 322, 3300 AH Dordrecht,
The Netherlands, or Kluwer Academic Publishers, PO Box 358, Accord
Station, Hingham, MA 02018-0358.
3. Proceedings of the biannual ACM Lisp and Functional Programming
Conference. (First one was in 1980.)
4. Proceedings of the annual Lisp Users and Vendors Conference.
----------------------------------------------------------------
Subject: [1-4] Where can I learn about implementing Scheme interpreters
and compilers?
Books about Scheme implementation include:
1. John Allen
"Anatomy of Lisp"
McGraw-Hill, 1978. 446 pages. ISBN 0-07-001115-X
2. Samuel Kamin
"Programming Languages, An Interpreter-Based Approach"
Addison-Wesley, Reading, Mass., 1990. ISBN 0-201-06824-9
Includes sources to several interpreters for Lisp-like
languages, and a pointer to sources via anonymous ftp.
3. Sharam Hekmatpour
"Lisp: A Portable Implementation"
Prentice Hall, 1985. ISBN 0-13-537490-X.
Describes a portable implementation of a small dynamic
Lisp interpreter (including C source code).
4. Peter Henderson
"Functional Programming: Application and Implementation"
Prentice-Hall (Englewood Cliffs, NJ), 1980. 355 pages.
5. Peter M. Kogge
"The Architecture of Symbolic Computers"
McGraw-Hill, 1991. ISBN 0-07-035596-7.
Includes sections on memory management, the SECD and
Warren Abstract Machines, and overviews of the various
Lisp Machine architectures.
6. Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes
"Essentials of Programming Languages"
MIT Press, 1992, 536 pages. ISBN 0-262-06145-7.
Teaches fundamental concepts of programming language
design by using small interpreters as examples. Covers
most of the features of Scheme. Includes a discussion
of parameter passing techniques, object oriented languages,
and techniques for transforming interpreters to allow
their implementation in terms of any low-level language.
Also discusses scanners, parsers, and the derivation of
a compiler and virtual machine from an interpreter.
Source files available by anonymous ftp from cs.indiana.edu
in the directory /pub/eopl (129.79.254.191) or from the
Scheme Repository.
7. Peter Lee, editor, "Topics in Advanced Language Implementation",
The MIT Press, Cambridge, Mass., 1991.
Articles relevant to the implementation of functional
programming languages.
8. Also see the proceedings of the biannual ACM Lisp and Functional
Programming conferences, the implementation notes for CMU Common Lisp,
Peter Norvig's book ("Paradigms of AI Programming: Case Studies
in Common Lisp", Morgan Kaufmann, 1992. 946 pages. ISBN
1-55860-191-0), and SICP (Abelson & Sussman).
----------------------------------------------------------------
Subject: [1-5] Free Scheme implementations.
Repositories of Scheme source code are described in the answer to
question [1-9].
Remember, when ftping compressed or compacted files (.Z, .arc, .fit,
etc.) to use binary mode for retrieving the files.
Repositories of Scheme implementations:
Many free Scheme implementations are available from altdorf.ai.mit.edu
[18.43.0.246]. See also the Scheme Repository described below.
The Scheme Repository contains a Scheme bibliography, copies
of the R4RS report, sample Scheme code for a variety of
purposes, several utilities, and some implementations. The
repository is maintained by Ozan S. Yigit, ······@nexus.yorku.ca.
The repository is accessible by anonymous ftp at
nexus.yorku.ca [130.63.9.66] in the directory pub/scheme/.
Scheme implementations:
PC-Scheme, free by anonymous ftp from altdorf.ai.mit.edu in the
directory /archive/pc-scheme/. Written by Texas Instruments. Runs on
MS-DOS 286/386 IBM PCs and compatibles. Includes an optimizing
compiler, an emacs-like editor, inspector, debugger, performance
testing, foreign function interface, window system and an
object-oriented subsystem. Conforms to the Revised^3 Report on
Scheme. Also supports the dialect used in Abelson and Sussman's SICP.
The official commercialized implementation costs $95 and includes a
reference manual and user's guide. Write to: Texas Instruments, 12501
Research Boulevard, MS 2151, Austin, TX 78759 and order TI Part number
#2537900-0001, or call 1-800-TI-PARTS and order it using your Visa or
Mastercard. [NOTE: Ibuki announced on July 13, 1992, that it has
purchased the rights to PC Scheme from TI and intends to make it also
available on 486 PCs and under Windows 3.1. For more information,
contact IBUKI, PO Box 1627, Los Altos, CA 94022, phone (415) 961-4996,
fax (415) 961-8016, email ···@ibuki.com.] Version 3.0, the one that
comes with the student edition, doesn't run on the 486, but the free
upgrade (pcscm3_3.exe in altdorf) works fine, as does the full
version 3.03.
PCS/Geneva is a cleaned-up version of Texas Instrument's PC Scheme
developed at the University of Geneva. The main extensions to PC
Scheme are 486 support, BGI graphics, LIM-EMS pagination support, line
editing, and assmebly-level interfacing. (TI's PC Scheme gives users
full Revised^3 support along with many primitives for DOS, Graphics
and Text Windows. A powerful built-in optimizing compiler produces
fast code.) The beta version of PCS/Geneva has been tested on XTs,
ATs, AT386s and AT486s under various DOS and OS/2 versions. It
even runs on Hewlett-Packard's HP95LX. To receive a copy of
PCS/Geneva, please send email to ········@uni2a.unige.ch. You will be
given instructions on obtaining PCS/Geneva by FTP. Even if you ftp
it from uni2a.unige.ch, you will need to send email to them to get the
password necessary to uncompress it. The purpose of the mailing detour
is to keep track of the users and diffuse bug reports along with
corrections.
MIT Scheme (aka C-Scheme), free by anonymous FTP from
altdorf.ai.mit.edu in the directory pub/scheme-7.1 (for the
architectures MC68020/30/40, HP Prevision Architecture, MIPS, VAX,
Sparc (SunOS), Intel 386/486, and DEC Alpha). Directory scheme-7.2
contains preliminary *alpha* versions of the next release of MIT
C-Scheme for the MIPS and Intel 386/486 (MS-DOS, Windows 3.x and Unix)
architectures. (The port includes Edwin, Scheme's Emacs-like editor
and Liar, the Scheme compiler. If you acquire the alpha release
through ftp, please send mail to ························@zurich.ai.mit.edu
so they know to send you updates and bug reports. Bugs in the DOS
version should be send to ···············@zurich.ai.mit.edu.) Does not
have a convenient foreign function interface yet. FTP distribution
includes MIT C-Scheme Reference and User manuals, as well as the
Revised^4 Report on Scheme. Send bug reports to
···········@zurich.ai.mit.edu. For DOS floppy distribution requests
(includes printed copies of manuals), send $95.00 (payable in U.S.
funds to "Scheme Distribution") to cover costs of distribution to
Scheme Distribution, c/o Prof. Hal Abelson, 545 Technology Sq. rm 410,
Cambridge MA 02139, USA.
|
On the NeXT, MIT Scheme is available as part of the Schematik
package, which provides an editor/front-end user interface,
graphics, and "robotics" support for Lego and the like. Schematik is
free and is available for anonymous ftp from ftp.gac.edu in the
pub/next/scheme directory. Europeans can get it more locally from
ftp.informatik.uni-muenchen.de, in the directory /pub/next/ProgLang;
start with Schematik-1.1.5.1.README . Schematik is also apparently
included on NeXT's "Educational Software Sampler" CD-ROM.
SCM, free by anonymous ftp from altdorf.ai.mit.edu:archive/scm/,
prep.ai.mit.edu:pub/gnu/jacal/ or nexus.yorku.ca:pub/scheme/new/.
Current version 4b4. Runs on Amiga, Atari-ST, MacOS, MS-DOS, OS/2,
NOS/VE, VMS, Unix and similar systems. SCM conforms to the Revised^4
Report on the Algorithmic Language Scheme and the IEEE P1178
specification. Scm is written in C. ASCII and EBCDIC are supported.
To receive an IBM PC floppy disk with the source files and MSDOS
and 386 executables send $99 to Aubrey Jaffer, 84 Pleasant Street,
Wakefield MA 01880, <······@zurich.ai.mit.edu>.
SLIB is a portable Scheme library which SCM uses, and is
available as the file slib1d0.tar.Z.
JACAL is a symbolic math system written in Scheme, and is
available as the file jacal1a0.tar.Z.
TURTLSCM is a turtle graphics package which works with SCM on
MSDOS or X11 machines. Written by Mkinen Sami <···@cc.tut.fi>, it
is available as the file turtlegr.tar.Z.
XSCM is an interface to Xlib and the Motif and OpenLook toolkits
for the SCM interpreter. It requires scm4a10 or later. It should be
available at any archive of alt.sources, or on altdorf, prep and
nexus as the file xscm1.05.tar.Z.
Contact ········@redsox.bsw.com for more information.
SMG-SCM is a package that adds VMS SMG screen management routines
to SCM. It is available from altdorf, prep and nexus as the file
sgm-scm.com. SMG-SCM.COM is a DCL command procedure; execute it to
extract the source code, documentation, and example code. Send
comments and bugs to T. Kurt Bond, <···@mtnet2.wvnet.edu>.
Hobbit is a Scheme-to-C compiler that works with the SCM Scheme
interpreter. It treats SCM as a C library and integrates compiled
functions into SCM as new primitives. Hobbit release 1 works with SCM
release 4b4. Future releases of SCM and Hobbit will be coordinated.
Hobbit imposes strong restrictions on the higher-order features of
Scheme. For example, it does not support continuations. The main aim
of hobbit is to produce maximally fast C programs which would retain
most of the original Scheme program structure, making the output C
program readable and modifiable. Hobbit is written in Scheme and is
able to self-compile. Hobbit can be obtained via anonymous ftp from
altdorf.ai.mit.edu:archive/scm/hobbit1.tar.Z
prep.ai.mit.edu:pub/gnu/jacal/hobbit1.tar.Z
nexus.yorku.ca:pub/scheme/new/hobbit1.tar.Z
For further information, contact the author, Tanel Tammet, at
<······@cs.chalmers.se>.
Gambit is an optimizing Scheme compiler/system. It conforms to the
IEEE-Scheme standard (IEEE P1178) and the Revised^4 Report on Scheme
(R4RS). The system supports the whole numeric tower (i.e. integer,
rational, real and complex numbers). It also has several extensions to
the standards including: weak pairs, string ports, property lists,
futures, pretty printer, debugger, compiler and multitasking. Gambit
runs on M680x0 based machines only (including Sun3, Apollo,
HP9000/3xx, BBN GP1000 multiprocessor, Amiga, NeXT, and the Apple
Macintosh). The latest version for UNIX based machines (including the
Macintosh running A/UX) is release 1.9. The latest version for the Mac
running the normal System/Finder is MacGambit release 1.9.1. The
distribution contains the interpreter and optimizing native code
compiler and all the sources required to build the system (the sources
for MacGambit are for THINK-C 5.0). MacGambit's specific features
include: a Scheme interface to several Toolbox routines (mostly
QuickDraw), a drawing window for simple graphics, an online help
system containing R4RS and a Scheme oriented editor with an emacs
compatibility mode. Gambit Scheme is available by anonymous ftp from
trex.iro.umontreal.ca [132.204.36.34] in the directory pub/gambit/.
Versions 1.7, 1.7.1, 1.8.2, 1.9.1 and 2.0 may be found in this
directory. Version 2.0 is in the files gambit20.tar.Z (Unix source),
macgambit-2.0-interpreter.hqx (MacGambit interpreter),
macgambit-2.0-sources1.hqx (sources needed to build the interpreter
using Think-C 5.0), and macgambit-2.0-sources2.hqx (Scheme source
files for runtime and compiler, and DEC's Thomas interpreter).
Copies may also be found in the Scheme Repository on
nexus.yorku.ca:pub/scheme/imp/, but the most recent version will
always be available from trex.iro.umontreal.ca. MacGambit may also be
obtained from the directory
/afs/umich.edu/group/itd/archive/mac/development/languages/
if your site runs the Andrew File System, or by anonymous ftp from
mac.archive.umich.edu. For more information about Gambit, send email
to ······@trex.iro.umontreal.ca. Gambit Scheme was written by Marc
Feeley <······@iro.umontreal.ca>. Gambit for UNIX and MacGambit are
copyright 1992, Universite de Montreal. The programs may be
distributed to others as long as they are not sold or transferred for
compensation (other than a reasonable duplication fee).
T3.1 is a Scheme-like language developed at Yale. Available by
anonymous ftp from ftp.ai.mit.edu in the directory pub/systems/t3.1.
(T may be obtained in Europe from nic.funet.fi in the directory
pub/unix/languages/scheme/t3.1 or from ftp.diku.dk in the directory
pub/t3.1) Runs on DecStations (MIPS processor) and SGI Iris, Sun4
(SPARC), Sun3, Vax/Unix. Includes a copy of the online version of the
T manual and release notes for T3.0 and T3.1. All implementations
include a foreign function (C) interface. To be informed of fixes, new
releases, etc., send your email address to ·········@cs.yale.edu. Bug
reports should go to ·······@cs.yale.edu. A multiprocessing version of
T (for Encore Multimax) is available from masala.lcs.mit.edu:/pub/mult.
Oaklisp is an seamless integration of Scheme with an object-oriented
substrate. Available by anonymous ftp from f.gp.cs.cmu.edu
[128.2.250.164] in the directory /usr/bap/oak/ftpable, or from
ftp.cs.cmu.edu in /afs/cs.cmu.edu/user/bap/oak/ftpable, and includes
reference and implementation manuals. Written by Barak Pearlmutter
<···@cse.ogi.edu> and Kevin Lang <·····@research.nj.nec.com>.
Elk (Extension Language Kit) is a Scheme interpreter designed to be
used as a general extension language. Available by anonymous ftp from
the Scheme Repository in nexus.yorku.ca:/pub/scheme/imp/. Also
available in the X contrib directory on export.lcs.mit.edu and from
tub.cs.tu-berlin.de in pub/elk as elk-2.0.tar.Z. Runs on Unix, SunOs,
and Ultrix based platforms, including VAX, Sun3, Sun4 (Sparc), 680x0,
80386, MIPS, IBM RT, IBM RS/6000, HP9000/700, SGI, and Sony NEWS. The
Elk interpreter is mostly R3RS compatible. Elk has interfaces to Xlib,
Xt and the various widget sets. Implemented by Oliver Laumann.
Scheme->C compiles R3RS Scheme to C that is then compiled by the
native C compiler for the target machine. Runs on Vaxen and DecStation
3100s running Ultrix, as well as Sun3, Sun4, Amiga (SAS/C 5.10b),
HP 9000/700 and Apollo. It is available for anonymous ftp from
gatekeeper.dec.com [16.1.0.2] in /pub/DEC/Scheme-to-C. There are
two interfaces to X-windows available, Ezd (a drawing system) and
SCIX (Scheme Interface to X), implemented using Scheme-to-C. Both should
be available by ftp from gatekeeper. Information on obtaining
documentation for Scheme->C may be obtained by sending mail to
···············@decwrl.dec.com with subject line "help".
SIOD (Scheme in One Defun), free by anonymous ftp from
nexus.yorku.ca:pub/scheme/imp/siod-v2.9-shar
world.std.com:src/lisp/siod-v2.9-shar
or in any comp.sources.unix archive. Runs on VAX/VMS, VAX UNIX, Sun3,
Sun4, Amiga, Macintosh, MIPS, Cray. Small scheme implementation in C
arranged as a set of subroutines that can be called from any main
program for the purpose of introducing an interpreted extension
language. Compiles to ~20K bytes of executable. Lisp calls C and C
calls Lisp transparently. Written by George Carrette <···@paradigm.com>.
XScheme is available free by anonymous ftp from ftp.uu.net in the
directories MSDOS/languages/X-scheme and amiga-sources/xscheme.20.zoo.
It includes an object system and is R3RS compliant.
It was written by David Michael Betz, 167 Villa Avenue #11, Los Gatos,
CA 95032, 408-354-9303 (H), 408-862-6325 (W), ·····@apple.com.
XScheme is discussed in the newsgroup comp.lang.lisp.x. It may also
be found in the Scheme Repository.
Fools' Lisp is a small Scheme interpreter that is R4RS conformant, and
is available by anonymous ftp from scam.berkeley.edu [128.32.138.1] in
the directory src/local/fools.tar.Z. Runs on Sun3 and Sun4 (SunOs),
DecStation 3100s, Vax (Ultrix), Sequent, and Apollo. Implemented by
Jonathan Lee <········@scam.berkeley.edu>.
Scheme48. The entry on Scheme48 has been temporarily removed, per
Jonathan Rees, 11/25/92. Scheme48 was an alpha release, and it was not
possible for a general user to reconstruct the system from sources.
When the distribution is complete we will restore the Scheme48 blurb.
UMB Scheme is a R4RS Scheme available by anonymous ftp from
ucbarpa.berkeley.edu in pub/UMB_scheme.tar.Z and also in the Scheme
Repository. It includes a simple editor, debugger, Written by William
Campbell, University of Massachusetts at Boston, ····@cs.umb.edu.
VSCM is a R4RS Scheme available by anonymous ftp from the Scheme Repository,
nexus.yorku.ca:pub/scheme/imp/vscm93Jan26.tar.Z [130.63.9.66]
Written by Matthias Blume, <·····@cs.princeton.edu>. The
implementation is based on a virtual machine design with heavy support
for most of the sophisticated features of Scheme. The virtual machine
is written in ANSI-C to aid in its portability.
Pixie Scheme for the Macintosh is a nearly complete implementation of
R3RS available by anonymous ftp from
rascal.ics.utexas.edu:/misc/mac/programming/
Pixie.Goodies.SIT.bin
Pixie.NoFPP.world.SIT.bin
Pixie.world.SIT.bin
PixieScheme.NoFPP.SIT.bin ; for macs without floating-point coprocessor
PixieScheme.SIT.bin ; for macs with FPP
Pixie_Scheme_Help.SIT.bin
Pixie_intro
Written by Jay Reynolds Freeman <·······@MasPar.COM>, P. O. Box 60628,
Palo Alto, CA, 94306-0628. A copy may also be obtained from
/afs/umich.edu/group/itd/archive/mac/development/languages
as the file pixiescheme.cpt.hqx if your site runs the Andrew File System,
or by anonymous ftp from mac.archive.umich.edu.
HELP (a lazy Scheme) is available by anonymous ftp from
sumex-aim.stanford.edu:/info-mac/lang/lazy-scheme.hqx. Written by
Thomas Schiex (······@cert.fr, ······@irit.fr). Help is a complete and
efficient Scheme-like functional lazy Lisp interpreter. It works only
on 68020 (or more) based Macintoshes. It has a 'friendly' interface
(parenthesis matcher, auto-indent), uses a full call-by-need semantics
and includes many examples, including a symbolic compiler for the
680x0. Efficiency is good and lazyness is fully parametrizable (you
may turn Help into a strict Scheme-like language if you like). French
AND English updated docs are included in Word4 and plain text formats.
Similix is a a Self-Applicable Partial Evaluator for a Subset of
Scheme. Written by Anders Bondorf and Olivier Danvy. It is available
by anonymous ftp from nexus.yorku.ca in the directory /pub/scheme/imp
as similix.tar.Z or from ftp.diku.dk:misc/Similix.tar.Z. For more
information, contact Anders Bondorf, DIKU, Department of Computer
Science, University of Copenhagen, Universitetsparken 1, DK-2100
Copenhagen, Denmark, or send email to ······@diku.dk. Similix may be
run in Chez Scheme and T3.1.
FDU Scheme is a R3RS implementation of Scheme for the Prime
50-series under Primos. It is available by anonymous ftp from
fdumad.fdu.edu [132.238.1.1] (username "anonymous", password
<RETURN>). Attach to the Scheme subdirectory (cd '*>scheme') and
transfer all files in it and its subdirectories using file type
binary. For more information, contact Peter Falley,
<······@fdumad.fdu.edu>.
Free Scheme Implementations implemented in Lisp:
Peter Norvig's book "Paradigms of AI Programming" has a chapters about
Scheme interpreters and compilers, both written in Common Lisp. The
software from the book is available by anonymous ftp from
unix.sri.com:pub/norvig and on disk in Macintosh or DOS format from
the publisher, Morgan Kaufmann. For more information, contact: Morgan
Kaufmann, Dept. P1, 2929 Campus Drive, Suite 260, San Mateo CA 94403,
or call Toll free tel: (800) 745-7323; FAX: (415) 578-0672
PseudoScheme is available free by anonymous ftp from
altdorf.ai.mit.edu:/archive/pseudo/pseudo-2-8.tar.Z. It is Scheme
implemented on top of Common Lisp, and runs in Lucid, Symbolics CL,
VAX Lisp under VMS, and Explorer CL. It should be easy to port to
other Lisps. It was written by Jonathan Rees (···@altdorf.ai.mit.edu,
···@cs.cornell.edu). Send mail to ·····················@mc.lcs.mit.edu
to be put on a mailing list for announcements. Conforms to R3RS except
for lacking a correct implementation of call/cc. It works by running
the Scheme code through a preprocessor, which generates Common Lisp code.
Scheme84 is in the public domain, and available by mail from Indiana
University. It runs on the VAX in Franz Lisp under either VMS or BSD Unix.
To receive a copy, send a tape and return postage to: Scheme84
Distribution, Nancy Garrett, c/o Dan Friedman, Department of Computer
Science, Indiana University, Bloomington, Indiana. Call 1-812-335-9770
or send mail to ···@indiana.edu for more information.
Scheme88 is available by anonymous ftp from rice.edu:public/scheme88.sh
and also from the Scheme Repository.
----------------------------------------------------------------
Subject: [1-6] Commercial Scheme implementations.
Chez Scheme is fully compatible with the IEEE and R4RS standards for the
Scheme programming language and includes an incremental compiler, object
inspector, multitasking with engines, and a foreign function interface. It
runs on Sparc and Sun3 (SunOs), Vax and DecStation (Ultrix), NeXT, Silicon
Graphics, and Motorola Delta 88000, costs approximately $2000 and requires
4-8mb RAM. Implemented by Kent Dybvig, Robert Hieb, and Carl Bruggeman.
Write to: Cadence Research Systems, 620 Park Ridge Road, Bloomington, IN
47408, call (812) 333-9269, or fax (812) 332-4688.
email: ···@cs.indiana.edu or ···@cadence.bloomington.in.us
MacScheme is a Scheme interpreter and compiler for the Apple Macintosh, and
includes an editor, debugger and object system. MacScheme costs $125
(includes compiler) and Scheme Express costs $70 (interpreter only). It
requires 1mb RAM. A development environment (MacScheme+Toolsmith) costs
$495. Conforms to the Revised^4 Report on the Algorithmic Language Scheme.
MacScheme+Toolsmith includes support for menus, windows, and interfaces to
the Macintosh Toolbox, and can create small standalone Macintosh
executables. Implemented by Will Clinger, John Ulrich, Liz Heller and Eric
Ost. Write to: Lightship Software, PO Box 1636, Beaverton, OR 97075, or
call (503) 292-8765. They're moving to California. The temporary phone
number is 415-940-4008 (Liz Heller). The new phone number will be
415-694-7799. MacScheme is distributed by ACS, 2015 East 3300
South, Salt Lake City, UT 84109-2630, 1-800-531-3227 (801-484-3923).
EdScheme runs on Macintosh, DOS and Atari ST and costs $50. It
includes an incremental compiler, and editor, and is a close match to
the IEEE standard. Implemented by Iain Ferguson, Edward Martin, and
Burt Kaufman. The book (The Schemer's Guide) is 328 pages long costs
$30. Write to: Schemers Inc., 4250 Galt Ocean Mile, Suite 7U, Fort
Lauderdale, FL 33308, call (305) 776-7376, or fax (305) 776-6174. You
can also send email to ··········@compuserve.com. They also offer an
Archimedes (Acorn) platform which is only available through their
European distributor, Lambda Publications, who is reachable by phone
at 44-793-695296 or by EMail on ···········@compuserve.com.
----------------------------------------------------------------
Subject: [1-7] Standards for Scheme -- What are R4RS and IEEE P1178?
R4RS is the Revised^4 Report on the Algorithmic Language Scheme,
edited by W. Clinger and J. Rees. It appeared in ACM Lisp Pointers IV,
July-September 1991, and also as MIT AI Memo 848b. It serves as a kind
of standard for the language. It can be obtained by anonymous ftp at
the two Scheme Repositories, altdorf.ai.mit.edu and nexus.yorku.ca.
IEEE P1178 is IEEE Standard 1178-1990, "IEEE Standard for the Scheme
Programming Language", published by IEEE in 1991. ISBN 1-55937-125-0.
It is now also an ANSI standard. It may be ordered from IEEE by
calling 1-800-678-IEEE or 908-981-1393 or writing IEEE Service
Center, 445 Hoes Lane, P.O. Box 1331, Piscataway, NJ 08855-1331,
and using order number SH14209 ($28 for IEEE members, $40 others).
----------------------------------------------------------------
Subject: [1-8] How do I do object-oriented programming in Scheme?
Some Scheme implementations (for example, MacScheme, Feel, Oaklisp, XScheme,
and PC-Scheme) include built-in object-oriented extensions.
SCOOPS (Scheme Object Oriented Programming System) is an object system
for Scheme written by Amitabh Srivastava/Texas Instruments with
re-writes by Steve Sherin <······@linc.cis.upenn.edu>. This package
needs first-class environments. It is available from the Scheme
Repository as /pub/scheme/scm/scoops.sha.
MEROON is a package written in Scheme to provide the basic facilities
of an object-oriented programming style through three macros:
define-class, define-generic, and define-method. MEROON offers simple
inheritance, reflective metaclasses and simple dispatching generic
functions. MEROON also offers indexed fields subsuming Scheme vectors
without inheritance restrictions. Meroon runs in Scheme->C, PC-Scheme,
Chez Scheme, Elk, Gambit. MEROON sources and documentation may be
found in the Scheme Repository as
nexus.yorku.ca:pub/scheme/new/meroon.*.tar.Z
and also from
ftp.inria.fr:pub/INRIA/icsla/meroon*.tar.Z. [128.93.1.26]
YASOS (Yet Another Scheme Object System) is fairly functional in style
and uses delegation. The implementation includes multiple inheritance
and "send to super" and is much smaller than class-based OO systems.
See Ken Dickey, "Scheming with Objects", AI Expert 7(10):24-33,
October 1992. A copy of the article and YASOS code is available from
the Scheme Repository in /pub/scheme/txt/swob.txt. YASOS is also
included as part of SLIB. For further information, contact Ken Dickey
<····@newton.apple.com>.
----------------------------------------------------------------
Subject: [1-9] Repositories of Scheme Software
There are several repositories of publicly redistributable and
public domain Scheme code.
The Scheme Repository contains a Scheme bibliography, copies of the
R4RS report, IEEE P1178 specification and other papers, sample Scheme
code for a variety of purposes, several utilities, and some
implementations. The Scheme code includes code for calendar
calculations, Earley parser, FORMAT for Scheme, a scheme version of
the Gabriel benchmarks, Marc Feeley's minimal object support for
Scheme, a Scheme pretty-printer, a Prolog interpreter written in
Scheme, a random number generator in Scheme, an implementation of
SCOOPS, code from Abelson and Sussman's SICP book, Aubrey Jaffer's
IEEE/R^3.99RS compliance test, an implementation of matrices, a Scheme
implementation of the Common Lisp FORMAT function and a
LALR(1) parser (ZEBU). The repository is maintained by Ozan S. Yigit,
······@nexus.yorku.ca. The repository is accessible by anonymous ftp
at nexus.yorku.ca [130.63.9.66] in the directory pub/scheme/.
Scheme Implementations may also be found at altdorf.ai.mit.edu:/archive/
The R4RS report is available in altdorf.ai.mit.edu:/archive/scheme-reports/
or as MIT AI Memo 848b (email ············@ai.mit.edu for more information).
The altdorf archive includes SCOOPS, CL2Scheme, extend-syntax,
btree, Gabriel benchmarks, FORMAT for Scheme, etc.
----------------------------------------------------------------
Subject: [1-10] Publicly Redistributable Scheme Software
SLIB is a portable scheme library that provides compatibility and
utility functions for many of the standard scheme implementations,
including Chez, ELK 1.5, GAMBIT, MITScheme, scheme->C, Scheme48,
T3.1 and Scm4b. It is available by anonymous ftp from
altdorf.ai.mit.edu:archive/scm/slib1d0.tar.Z
prep.ai.mit.edu:pub/gnu/jacal/slib1d0.tar.Z
nexus.yorku.ca:pub/scheme/new/slib1d0.tar.Z
TEST.SCM is an IEEE and R4RS conformance test suite. It is available
from
altdorf.ai.mit.edu:archive/scm/test.scm
prep.ai.mit.edu:pub/gnu/jacal/test.scm
nexus.yorku.ca:pub/scheme/new/test.scm
PSD (Portable Scheme Debugger) is available by anonymous ftp
from Tampere University of Technology, Finland,
cs.tut.fi:/pub/src/languages/schemes/psd.tar.Z
With PSD, you can run a Scheme program in an Emacs buffer, set
breakpoints, single step evaluation and access and modify the
program's variables. It works by instrumenting the original source
code, so it should run with any R4RS compliant Scheme. It has been
tested with SCM and Elk 1.5, but should work with other Schemes with a
minimal amount of porting, if at all. Includes documentation and
user's manual. Written by Pertti Kellom\"aki, ··@cs.tut.fi
A bibliography of work in functional programming can be obtained by
anonymous ftp from tamdhu.dcs.st-andrews.ac.uk:/pub/staple/pubs.txt
(138.251.192.40). It uses a refer-like format with %T for title, %A
for authors %I for a unique index entry %S for source (possibly a
reference to another index) %K for keywords and %C for comments.
Compiled by Tony Davie, <····@honey.st-and.ac.uk>.
Scheme Utilities -- brokaw.lcs.mit.edu:/pub/scmutils.tar 18.30.0.33
[This collection seems to no longer be located on brokaw -- does
anybody know the current location?]
A collection of Scheme implementations of data structures and
algorithms is available by anonymous ftp from cs.tut.fi in the
directory /pub/src/languages/schemes/as the file scheme-algorithms.tar.
For more information, contact Pertti Kellom\"aki <··@cs.tut.fi>.
6.001. The User's Manual, example code, and problem sets from MIT's
course "Structure and Interpretation of Computer Programs" are
available by anonymous ftp from martigny.ai.mit.edu:archive/6.001/
[18.43.0.152].
Steele's Constraint System. Chris Hanson's implementation of Steele's
constraint system is available for anonymous ftp from
martigny.ai.mit.edu:archive/cph/constraint.tar [18.43.0.152]
nexus.yorku.ca:pub/scheme/new/constraint.tar.Z
A compressed version is also stored there. The software is source code
for MIT Scheme. It should run in release 7.1.3. Most of the MIT Scheme
dependencies could be eliminated, but it also uses the following
procedures which aren't in standard Scheme: error, bkpt, macros,
dynamic binding, and string output ports. The code corresponds pretty
closely to Guy Steele's PhD thesis implementation, which you can
obtain in printed form from the MIT AI Lab publications office as
AI-TR-595 for $15.00 (email ············@ai.mit.edu for more
information). For more information, send email to Chris Hanson
<···@martigny.ai.mit.edu>.
JACAL is a symbolic mathematics system for the simplification and
manipulation of equations and single and multiple valued algebraic
expressions constructed of numbers, variables, radicals, and algebraic
functions, differential, and holonomic functions. In addition, vectors
and matrices of the above objects are included. JACAL is written in
Scheme and requires SLIB. JACAL source is available via anonymous FTP
from
altdorf.ai.mit.edu:archive/scm/jacal1a0.tar.Z,
prep.ai.mit.edu:pub/gnu/jacal/jacal1a0.tar.Z, and
nexus.yorku.ca:pub/scheme/new/jacal1a0.tar.Z
Contact ······@altdorf.ai.mit.edu for more information.
Zebu 0.9 is an LALR(1) parser generator for Scheme written by
William M. Wells III. It lives in the Scheme Repository nexus.yorku.ca
in the scm directory and works with PC-Scheme from TI and MIT C-Scheme 6.2
(but not with anything after 7.0).
Thomas is a compiler for the Dylan programming language. The Thomas
system is written in Scheme and runs under MIT's CScheme, DEC's
Scheme->C, and Marc Feeley's Gambit. It can run on a wide range of
machines including the Macintosh, PC compatibles, Vax, MIPS, Alpha,
and 680x0. Thomas generates IEEE compatible Scheme code. Thomas is
available to the public by anonymous ftp at
crl.dec.com:pub/DEC/Thomas
gatekeeper.pa.dec.com:pub/DEC/Thomas
altdorf.ai.mit.edu:archive/Thomas
For more information on Thomas and Dylan, see part 4 of the Lisp FAQ.
----------------------------------------------------------------
Subject: [6-6] Formatting code in LaTeX
SLaTeX is a R4RS-compliant Scheme program that allows you to write
program code "as is" in your LaTeX or TeX source. It is particularly
geared to the programming languages Scheme and Common Lisp, and has
been tested in Chez Scheme, Common Lisp, MIT C Scheme, Elk, Scheme->C,
SCM and UMB Scheme on Unix; and MIT C Scheme and SCM on MSDOS. The
formatting of the code includes assigning appropriate fonts to the
various tokens in the code (keywords, variables, constants, data), at
the same time retaining the proper indentation when going to the
non-monospace (non-typewriter) provided by TeX. SLaTeX comes with two
databases that recognize the standard keywords/variables/constants of
Scheme and Common Lisp respectively. These can be modified by the
user using easy TeX commands. In addition, the user can inform SLaTeX
to typeset arbitrary identifiers as specially suited TeX expressions
(i.e., beyond just fonting them). The code-typesetting program SLaTeX
is available by anonymous ftp from cs.rice.edu as the file
public/dorai/slatex.tar.Z. Send bug reports to ·····@cs.rice.edu.
SchemeWEB is a Unix filter that translates SchemeWEB source into LaTeX
source or Scheme source. Originally developed for the Scheme dialect
of Lisp, it can easily be used with most other dialects.
Posted to comp.sources.unix, Volume 26, Issue 82, by John D.
Ramsdell <········@linus.mitre.org>, under archive name schemeweb/part01.
----------------------------------------------------------------
Subject: [1-11] Where can I get an implementation of Prolog in Scheme?
Prolog in Scheme is a collection of macros that expand syntax for
clauses, elations, and so on. It is written in Scheme and has support
for delayed goals and interval arithmetic. It is known to run in Chez
Scheme and in Elk, and is intended to be portable to other Scheme
implementations. It relies on continuations, and so is not easily
ported to Common Lisp. Available from the University of Calgary by
anonymous ftp from
fsa.cpsc.ucalgary.ca:pub/prolog1.2/prolog12.tar.Z
Questions and comments may be addressed to Alan Dewar
<·····@cpsc.ucalgary.ca> or John Cleary <······@cpsc.ucalgary.ca>.
An implementation of prolog for Chez Scheme is available by anonymous
ftp from titan.rice.edu:public/slog.sh. It is a collection of macros
that expand syntax for clauses, elations, and so on into pure Scheme.
It should be easily portable to other Schemes. Its use of
higher-order continuations is probably a major obstacle to porting it
to Common Lisp. For more information, please contact the author:
·····@cs.rice.edu.
----------------------------------------------------------------
Subject: [1-12] What does SICP, SCOOPS, R4RS, CAR, CDR, ... mean?
Glossary of acronyms:
CAR Originally meant "Contents of Address portion of Register",
which is what CAR actually did on the IBM 704.
CDR Originally meant "Contents of Decrement portion of
Register", which is what CDR actually did
on the IBM 704. Pronounced "Cudder".
ANSI American National Standards Institute
SICP Abelson and Sussman's book "Structure and
Interpretation of Computer Programs".
SCOOPS An experimental object-oriented programming
language for Scheme.
R3RS Revised^3 Report on the Algorithmic Language Scheme.
R4RS Revised^4 Report on the Algorithmic Language Scheme.
----------------------------------------------------------------
;;; *EOF*