From csus.edu!decwrl!decwrl!uunet!noc.near.net!das-news.harvard.edu!cantaloupe.srv.cs.cmu.edu!crabapple.srv.cs.cmu.edu!mkant Tue Jul 13 08:12:49 1993 Xref: csus.edu comp.lang.scheme:5551 comp.lang.lisp:6936 news.answers:10349 comp.answers:1286 Newsgroups: comp.lang.scheme,comp.lang.lisp,news.answers,comp.answers Path: csus.edu!decwrl!decwrl!uunet!noc.near.net!das-news.harvard.edu!cantaloupe.srv.cs.cmu.edu!crabapple.srv.cs.cmu.edu!mkant From: mkant+@cs.cmu.edu (Mark Kantrowitz) Subject: FAQ: Scheme Frequently Asked Questions 1/1 [Monthly posting] Message-ID: Followup-To: poster Sender: news@cs.cmu.edu (Usenet News System) Supersedes: Nntp-Posting-Host: a.gp.cs.cmu.edu Reply-To: lisp-faq@think.com Organization: School of Computer Science, Carnegie Mellon Date: Tue, 13 Jul 1993 08:00:51 GMT Approved: news-answers-request@MIT.Edu Expires: Tue, 24 Aug 1993 08:00:27 GMT Lines: 1205 Status: O Archive-name: scheme-faq/part1 Last-Modified: Mon May 17 12:27:16 1993 by Mark Kantrowitz Version: 1.4 ;;; **************************************************************** ;;; Answers to Frequently Asked Questions about Scheme ************* ;;; **************************************************************** ;;; Written by Mark Kantrowitz and Barry Margolin ;;; scheme-faq-1.text -- 61243 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 lisp-faq@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 scheme@ai.mit.edu mailing list or the comp.lang.scheme newsgroup (scheme@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: ;;; 1.3 ;;; 14-APR-93 mk Mods to question 1-2. ;;; 14-APR-93 mk Updated version of VSCM (Apr 12). ;;; 30-APR-93 mk Added Pertti's SCLINT (Scheme Lint). ;;; 3-MAY-93 mk Updated EdScheme entry. ;;; 6-MAY-93 mk Added entry on Tiny CLOS to 1-8. ;;; ;;; 1.4 ;;; 13-MAY-93 mk Added entry on BIGLOO Scheme. ;;; 14-MAY-93 mk Clarification of Elk entry. ;;; 17-MAY-93 mk Updated Scheme->C entry. ;;; 18-MAY-93 mk Updated PCS/Geneva entry. ;;; 18-MAY-93 mk Updated Similix entry. ;;; 18-MAY-93 mk Updated SMG-SCM entry. ;;; 5-JUL-93 mk Added entry on WB. ;;; 7-JUL-93 mk Gambit new ftp address. 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 "name@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-.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.70.0.224] 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 mail-server@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 scheme@mc.lcs.mit.edu mailing list. comp.lang.scheme.c Discussion of C-Scheme, a scheme dialect. This newsgroup is gatewayed to the info-cscheme@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 info-dylan@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 majordomo@cambridge.apple.com with "subscribe " in the message body. Likewise use "unsubscribe " to cancel your subscription and "help" to get help.] General Scheme Mailing Lists: scheme@mc.lcs.mit.edu Discussion of Scheme. Gatewayed to the comp.lang.scheme newsgroup. scheme@ai.mit.edu General discussion about Scheme. Particular Flavors of Scheme: info-cscheme@altdorf.ai.mit.edu, info-cscheme@zurich.ai.mit.edu C-Scheme. Gatewayed to the comp.lang.scheme.c newsgroup. t-project@cs.yale.edu T, a dialect of Scheme. info-clscheme@mc.lcs.mit.edu PseudoScheme info-dylan@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, the equivalent program would like like this: (define fact (lambda (n) (if (< n 2) 1 (* n (fact (- n 1)))))) Experienced Lisp programmers might write this program as follows in order to allow it to run in constant space: (defun fact (n) (labels ((tail-recursive-fact (counter accumulator) (if (> counter n) accumulator (tail-recursive-fact (1+ counter) (* counter accumulator))))) (tail-recursive-fact 1 1))) Whereas in Scheme the same computation could be written as follows: (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)))) or perhaps (using IEEE named LETs): (define fact (lambda (n) (let loop ((counter n) (accumulator 1)) (if (< counter 2) accumulator (loop (- counter 1) (* accumulator counter)))))) Some Schemes allow one to use the syntax (define (fact n) ...) instead of (define fact (lambda (n) ...)). ---------------------------------------------------------------- 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. 10. "Introductory Scheme" by Joseph W. Lavinus and James D. Arthur, . Available from the Lisp Utilities Repository as schemedoc.tar.Z. 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. (jlz@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. See also the Scheme Bibliography from the Scheme Repository (nexus.yorku.ca:pub/scheme/) for additional readings. A large number of technical reports on Scheme are now available in the text section (scheme/txt/). ---------------------------------------------------------------- Subject: [1-4] Where can I learn about implementing Scheme interpreters and compilers? There is no single book that is really comprehensive, so you will have to combine reading the sources to the various free implementations (e.g., Gambit [Feeley] and S48 [Rees]) with bits and pieces of tech reports and various books. 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). Technical reports and journal articles about Scheme implementation include: Mitchell Wand and Daniel P. Friedman, "Compiling Lambda Expressions Using Continuations and Factorizations", Journal of Computer Languages 3(1978), 241-263. Guy Lewis Steele Jr., "Rabbit: A Compiler for Scheme", MIT AI Memo 474, Massachusetts Institute of Technology, Cambridge, MA, May 1978. Guy Lewis Steele Jr., "Compiler Optimization Based on Viewing LAMBDA as RENAME + GOTO", in "Artificial Intelligence: An MIT Perspective", Patrick Henry Winston and Richard Henry Brown (eds.), MIT Press, Cambridge, MA, 1980. Jonathan A. Rees and Norman I. Adams, "T: A Dialect of Lisp or, LAMBDA: The Ultimate Software Tool", Conference Record of the 1982 ACM Symposium on Lisp and Functional Programming, 1982, 114-122. R. Kent Dybvig, "C-Scheme", Computer Science Department Technical Report #149 (MS Thesis), Indiana University, Bloomington, IA, 1983. William Clinger, "The Scheme 311 compiler: An Exercise in Denotational Semantics", Conference Record of the 1984 ACM Symposium on Lisp and Functional Programming, 1984, 356-364. Guillermo J. Rozas, "Liar, an Algol-like Compiler for Scheme", S.B. Thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, January 1984. David H. Bartley and John C. Jensen, "The Implementation of PC Scheme", Proceedings of the 1986 ACM Conference on Lisp and Functional Programming, 1986, 86-93. David Kranz, Richard Kelsey, Jonathan A. Rees, Paul Hudak, James Philbin and Norman I. Adams, "Orbit: An Optimizing Compiler for Scheme", Proceedings of the SIGPLAN Notices '86 Symposium on Compiler Construction, June 1986, 219-233. Published as SIGPLAN Notices 21(7), July 1986. Marc Feeley, "Deux Approches a' L'implantation du Language Scheme", M.Sc. Thesis, De'partement d'Informatique et de Recherche Ope'rationelle, University of Montreal, May 1986. R. Kent Dybvig, "Three Implementation Models for Scheme", Department of Computer Science Technical Report #87-011 (Ph.D. Dissertation), University of North Carolina at Chapel Hill, Chapel Hill, North Carolina, April 1987. William D. Clinger, Anne H. Hartheimer and Eric M. Ost, "Implementation Strategies for Continuations", Conference Record of the 1988 ACM Conference on Lisp and Functional Programming, August 1988, 124-131. David Kranz, "Orbit: An Optimizing Compiler for Scheme", Computer Science Technical report #632 (Ph.D. Dissertation), Yale University, 1988. Joel F. Bartlett, "SCHEME->C a Portable Scheme-to-C Compiler", Research Report 89/1, Dec. Western Research Laboratory, Palo Alto, CA, January 1989. Marc Feeley and James S. Miller, "A Parallel Virtual Machine for Efficient Scheme Compilation", Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, Nice, France, June 1990. Chris Hanson, "Efficient Stack Allocation for Tail-Recursive Languages", Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, Nice, France, June 1990. Robert Hieb, R. Kent Dybvig and Carl Bruggeman, "Representing Control in the Presence of First-Class Continuations", Proceedings of the SIGPLAN Notices '90 Conference on Programming Language Design and Implementation, White Plains, New York, June 1990, 66-77. Guillermo Rozas, "Taming the Y Operator", Proceedings of the 1992 ACM Conference on Lisp and Functional Programming, San Francisco, CA, June 1992, 226-234. Dan Teodosiu, "HARE: An Optimizing Portable Compiler for Scheme", ACM Sigplan Notices 26(1), January 1991. ---------------------------------------------------------------- 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, .z, .arc, .fit, etc.) to use binary mode for retrieving the files. Files that end with a .z suffix were compressed with the patent-free gzip (no relation to zip). Source for gzip is available from: prep.ai.mit.edu:pub/gnu/{gzip-1.0.7.shar,gzip-1.0.7.tar} 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 most free implementations. (Implementations of Scheme available from the repository include elk, gambit, scm, fools, rabbit, s48, scheme84, scheme88, pseudo, xscheme, umb-scheme, siod, vscm, and pixiescheme.) The repository is maintained by Ozan S. Yigit, scheme@nexus.yorku.ca. The repository is accessible by anonymous ftp at nexus.yorku.ca [130.63.9.66] in the directory pub/scheme/. The repository is mirrored in INRIA, courtesy of Christian Queinnec [Ecole Polytechnique and INRIA-Rocquencourt], ftp.inria.fr:lang/Scheme. (See also [1-9] below.) 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 rww@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 assembly-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. PCS/Geneva is available free by anonymous ftp from uni2a.unige.ch:msdos/pcscheme.{doc,exe,taz} [129.194.4.31] or by email (uuencoded) from schemege@uni2a.unige.ch. If you ftp PCS/Geneva, please send mail to schemege@uni2a.unige.ch; the authors like to know their public and will inform you when a new release is available. This is also the email address for bug reports or if you need any kind of help. This product may be distributed freely and used without restrictions except for military purposes. 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 info-cscheme-dos-request@zurich.ai.mit.edu so they know to send you updates and bug reports. Bugs in the DOS version should be send to bug-cscheme-dos@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 bug-cscheme@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. | A preliminary unofficial port of C-Scheme to the Linux is available from artemide.dei.unipd.it:/linux/scheme-7.2/. Contact the author Matteo Frigo for more information. 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 4c0. 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, . SLIB is a portable Scheme library which SCM uses, and is available as the file slib1d2.tar.Z. JACAL is a symbolic math system written in Scheme, and is available as the file jacal1a1.tar.Z. TURTLSCM is a turtle graphics package which works with SCM on MSDOS or X11 machines. Written by Mkinen Sami , 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 campbell@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-scm2a1.zip. (A VMS version of Unzip is available by anonymous FTP from ftp.spc.edu:[ANONYMOUS.MACRO32]UNZIP.EXE.) This file contains the source code, documentation, and example code. Send comments and bugs to T. Kurt Bond, (preferred) or . WB is a disk based, sorted associative array C library. These associative arrays consist of variable length (less that 256 bytes) keys and values. WB comes with an interface to SCM. Basic operations are creation, destruction, opening and closing of diskfiles and arrays, insertion, deletion, retrieval, successor, and predecessor (with respect to dictionary order of keys). Functional application of find-next, deletion, and modification over a range of consecutive key values is supported. Multiple associative arrays can be stored in one disk file. Simultaneous access to multiple disk files is supported. A structure checker, garbage collector are included. A repair program and ram-disk type file (for temporary structures) are in developement. The current WB implementation has a file size limit of 2^32 * block size (default 2048) = 2^43 bytes (8796 Gbytes). WB does its own memory and disk management. WB is available on altdorf, prep, and nexus as wb1a1.tar.z. A Windows version of Scheme called WinScm is forthcoming from Vincent Manis of Langara College of BC, Canada. 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 2 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/hobbit2.tar.Z prep.ai.mit.edu:pub/gnu/jacal/hobbit2.tar.Z nexus.yorku.ca:pub/scheme/new/hobbit2.tar.Z For further information, contact the author, Tanel Tammet, at or at Tanel Tammet, Department of Computer Sciences, Chalmers University of Technology, S-41296 Go"teborg, Sweden. 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 ftp.iro.umontreal.ca:/pub/parallele/gambit/ [132.204.32.22]. 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 gambit@trex.iro.umontreal.ca. Gambit Scheme was written by Marc Feeley . 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 t-project@cs.yale.edu. Bug reports should go to t3-bugs@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 and Kevin Lang . Elk (Extension Language Kit) is a Scheme interpreter designed to be used as a general extension language for C. It includes dynamic linking of C object files and an optional foreign function interface. 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 is an R4RS compliant Scheme system that is centered around a compiler that compiles Scheme to C. Besides the base language, the system includes "expansion passing style" macros, a foreign function call capability, records, weak pointers, 3 X11 interfaces, and a generational, conservative, copying garbage collector. The result is a system that is portable, efficient, and able to build applications that contain a mix of compiled and interpreted Scheme, and compiled code from C, C++ and other languages. The current release of Scheme->C runs on the following systems: Digital Alpha AXP systems with OSF/1, MIPS based DECstations, VAXen with ULTRIX, MIPS based SGI systems, PC's running Microsoft Windows 3.1, Apple Macintosh's running system 7.1, HP 9000/300, HP 9000/700, Sony News, Harris Nighthawk and other m88k systems, linux, and Sun SPARC. Earlier releases also run on Sun3, DNx500, DN1000, 386's running Unix, DNx500, and DN1000 systems. The software is available for anonymous ftp from gatekeeper.dec.com [16.1.0.2] from the directory pub/DEC/Scheme-to-C. There are three interfaces to X11, all written in Scheme, available from gatekeeper. The first is a complete set of stubs to Xlib included in the base system. The second is an alternative to Xlib called SCIX, found in pub/X11/contrib. The third, ezd, allows programs to easily produce interactive, structured graphics and is found in pub/DEC/ezd. Those without ftp access can also obtain Scheme->C and ezd from the Prime Time Freeware CD, Vol. 1, No. 2. Additional information is available from the author at Digital Equipment Corporation's Western Research Lab: Joel Bartlett, bartlett@decwrl.dec.com. 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 . 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), dbetz@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 . 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 ftp.cs.umb.edu in pub/scheme/umb-scheme-2.10.tar.Z and also in the Scheme Repository. It includes a simple editor, debugger, Written by William Campbell, University of Massachusetts at Boston, bill@cs.umb.edu. VSCM is a R4RS Scheme available by anonymous ftp from the Scheme Repository, nexus.yorku.ca:pub/scheme/imp/vscmIIApr12.tar.Z [130.63.9.66] Written by Matthias Blume, . 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 , 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 (schiex@cert.fr, schiex@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 Self-Applicable Partial Evaluator for a Subset of Scheme. Written by Anders Bondorf, Olivier Danvy, and Jesper J{\o}rgensen. It is available by anonymous ftp from nexus.yorku.ca:/pub/scheme/imp/ as similix.tar.Z or from ftp.diku.dk:pub/diku/dists/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 anders@diku.dk. Similix conforms to the IEEE and R4RS standards, but also runs under R3RS Scheme. It runs in SCM, 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 ). 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, . BIGLOO is a Scheme interpreter and compiler. It conforms to the IEEE-Scheme standard (IEEE P1178) with some extensions, such as regular expression parsing (RGC) and a pattern matching compiler. The main goal of Bigloo is to deliver small and fast stand alone applications. Bigloo produces ANSI C and hence should be easy to port. It runs on Sparc (1, 2, 10), SONY-NEWS (MIPS R3000), IRIS Indigo (MIPS R3000), Sun 3/60, DecStation 3100, PC-486 (linux), and HP-PA (730). It is available by anonymous ftp from ftp.inria.fr:/INRIA/Projects/icsla/bigloo1.3.tar.Z For further information, send email to Manuel.Serrano@inria.fr, or write to Manuel Serrano (equipe ICSLA, Bat 8), INRIA-Rocquencourt, BP 105, 78153, Le Chesnay CEDEX, FRANCE, or call 39-63-57-32. 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 (jar@altdorf.ai.mit.edu, jar@cs.cornell.edu). Send mail to info-clscheme-request@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 nlg@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: dyb@cs.indiana.edu or dyb@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, editor, and turtle graphics interface, 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., 2136 NE 68th Street, Suite 401, Fort Lauderdale, FL 33308, call (305) 776-7376, or fax (305) 776-6174. You can also send email to 71020.1774@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 100015.1465@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 . 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 . Tiny CLOS is a Scheme implementation of a `kernelized' CLOS, with a metaobject protocol. The implementation is even simpler than the simple CLOS found in `The Art of the Metaobject Protocol,' weighing in at around 850 lines of code, including (some) comments and documentation. Tiny CLOS is available by anonymous ftp from parcftp.xerox.com:/pub/mops/. Tiny CLOS runs in MIT Scheme 11.74 and should run with only minor modifications in other Schemes as well. If you want to be added to the mops@parc.xerox.com mailing list (technical questions and discussion only), send mail to Gregor Kiczales . ---------------------------------------------------------------- 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, a Scheme front end to Adobe Illustrator PostScript, and a LALR(1) parser (ZEBU). The repository is maintained by Ozan S. Yigit, . The repository is accessible by anonymous ftp at nexus.yorku.ca [130.63.9.66] in the directory pub/scheme/. The repository is mirrored in INRIA, courtesy of Christian Queinnec [Ecole Polytechnique and INRIA-Rocquencourt], ftp.inria.fr:lang/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 publications@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, pk@cs.tut.fi SCLINT is a lint-like program for Scheme. It checks for consistency of indentation, syntax of special forms, and the number of arguments to primitive and most user-defined procedures. This is not a full implementation, but rather a quick hack. It is used in teaching programming at the Tampere University of Technology. It is available by anonymous ftp from cs.tut.fi:/pub/src/languages/schemes/sclint-0.9.tar.Z. For further information, write to Pertti Kellom\"aki . 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, . 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 . 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 publications@ai.mit.edu for more information). For more information, send email to Chris Hanson . 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 jaffer@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. MATCH is a pattern matching macro package for Scheme. Pattern matching allows complicated control decisions based on data structure to be expressed in a concise manner. This document describes several pattern matching macros for Scheme, and an associated mechanism for defining new forms of structured data. At present, this macro package works only with Chez Scheme (release 4 or greater), but adapting it to other Scheme systems should be easy. MATCH is available by anonymous ftp from titan.cs.rice.edu:public/wright/match.tar.Z [128.42.1.30] and includes the macro source code and documentation. A copy should be available from the Scheme repository shortly. For further information, write to Andrew Wright, . ---------------------------------------------------------------- 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 dorai@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 , 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 or John Cleary . 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: dorai@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". EOPL Essentials of Programming Languages 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* From csus.edu!sacsa3.mp.usbr.gov!borcore.usbr.gov!csn!magnus.acs.ohio-state.edu!math.ohio-state.edu!howland.reston.ans.net!gatech!bloom-beacon.mit.edu!uhog.mit.edu!nntp.club.cc.cmu.edu!cantaloupe.srv.cs.cmu.edu!mkant Fri Nov 18 05:19:44 1994 Path: csus.edu!sacsa3.mp.usbr.gov!borcore.usbr.gov!csn!magnus.acs.ohio-state.edu!math.ohio-state.edu!howland.reston.ans.net!gatech!bloom-beacon.mit.edu!uhog.mit.edu!nntp.club.cc.cmu.edu!cantaloupe.srv.cs.cmu.edu!mkant From: mkant+@cs.cmu.edu (Mark Kantrowitz) Newsgroups: comp.lang.scheme,comp.lang.lisp,news.answers,comp.answers Subject: FAQ: Scheme Frequently Asked Questions 1/2 [Monthly posting] Supersedes: Followup-To: poster Date: 13 Nov 1994 08:02:52 GMT Organization: Carnegie-Mellon University, School of Computer Science Lines: 1086 Approved: news-answers-request@MIT.Edu Distribution: world Expires: 25 Dec 1994 08:00:25 GMT Message-ID: Reply-To: ai+lisp-faq@cs.cmu.edu NNTP-Posting-Host: glinda.oz.cs.cmu.edu Xref: csus.edu comp.lang.scheme:9671 comp.lang.lisp:11999 news.answers:32025 comp.answers:8297 Archive-name: scheme-faq/part1 Last-Modified: Thu Nov 10 22:42:57 1994 by Mark Kantrowitz Version: 1.19 Maintainer: Mark Kantrowitz and Barry Margolin URL: http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/scheme/top.html Size: 53340 bytes, 1094 lines ;;; **************************************************************** ;;; Answers to Frequently Asked Questions about Scheme ************* ;;; **************************************************************** ;;; Written by Mark Kantrowitz and Barry Margolin ;;; scheme_1.faq This post contains part 1 of 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 ai+lisp-faq@cs.cmu.edu. 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 scheme@ai.mit.edu mailing list, the comp.lang.scheme newsgroup or the Scheme Digest (scheme@mc.lcs.mit.edu) for that. If a question appears frequently in one of those forums, it will get added to the FAQ list. *** Copyright: Copyright (c) 1993-94 by Mark Kantrowitz and Barry Margolin. 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. If this FAQ is reproduced in offline media (e.g., CD-ROM, print form, etc.), a complimentary copy should be sent to Mark Kantrowitz, School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA 15213-3891 USA. This article is provided AS IS without any express or implied warranty. *** Topics Covered: Topics Covered (Part 1): [1-0] What is the purpose of this newsgroup? [1-2] What is the difference between Scheme and Common Lisp? [1-3] Scheme books, introductions, documentation, periodicals, journals, and conference proceedings. [1-4] Where can I learn about implementing Scheme interpreters and compilers? [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] Formatting code in LaTeX (WEB and other literate programming tools) [1-12] Where can I get an implementation of Prolog in Scheme? [1-13] What does SICP, SCOOPS, R4RS, CAR, CDR, ... mean? [1-14] Why is there no EVAL in Scheme? [1-15] World-Wide Web (WWW) Resources [1-16] Why is Scheme called 'Scheme'? Topics Covered (Part 2): [2-1] Free Scheme implementations. [2-2] Commercial Scheme implementations. [2-3] What Scheme-related discussion groups and mailing lists exist? Search for \[#\] to get to question number # quickly. *** Recent Changes: ;;; 1.19: ;;; 20-OCT-94 mk Added FTP location for Scheme84. ;;; 3-NOV-94 mk FTP collections on altdorf.ai.mit.edu have moved to ;;; swiss-ftp.ai.mit.edu ;;; 3-NOV-94 mk Added Christian Queinnec's Lisp book to [1-4]. *** 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: To obtain the files from CMU, connect by anonymous FTP to ftp.cs.cmu.edu:/user/ai/pubs/faqs/scheme/ [128.2.206.173] using username "anonymous" and password "name@host" (substitute your email address) or via AFS in the Andrew File System directory /afs/cs.cmu.edu/project/ai-repository/ai/pubs/faqs/scheme/ and get the files scheme_1.faq and scheme_2.faq. You can also obtain a copy of the FAQ by sending a message to ai+query@cs.cmu.edu with Send Scheme FAQ in the message body. An automatically generated HTML version of the Scheme FAQ is accessible by WWW as part of the AI-related FAQs Mosaic page. The URL for this resource is http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/top.html The direct URL for the Lisp FAQ is http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/scheme/top.html 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:/pub/usenet/news.answers/ [18.181.0.24] in the lisp-faq/, ai-faq/ and scheme-faq/ subdirectories or by email. For instructions on email retrieval, send a mail message to mail-server@rtfm.mit.edu with "help" and "index" on separate lines in the body of the message. If you need to cite the FAQ for some reason, use the following format: Mark Kantrowitz and Barry Margolin, "Answers to Frequently Asked Questions about Scheme", comp.lang.scheme, , , ftp.cs.cmu.edu:/user/ai/pubs/faqs/scheme/scheme_?.faq, ai+lisp-faq@cs.cmu.edu. ---------------------------------------------------------------- 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 [2-3]. 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-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, the equivalent program would like like this: (define fact (lambda (n) (if (< n 2) 1 (* n (fact (- n 1)))))) Experienced Lisp programmers might write this program as follows in order to allow it to run in constant space: (defun fact (n) (labels ((tail-recursive-fact (counter accumulator) (if (> counter n) accumulator (tail-recursive-fact (1+ counter) (* counter accumulator))))) (tail-recursive-fact 1 1))) Whereas in Scheme the same computation could be written as follows: (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)))) or perhaps (using IEEE named LETs): (define fact (lambda (n) (let loop ((counter n) (accumulator 1)) (if (< counter 2) accumulator (loop (- counter 1) (* accumulator counter)))))) Some Schemes allow one to use the syntax (define (fact n) ...) instead of (define fact (lambda (n) ...)). ---------------------------------------------------------------- Subject: [1-3] Scheme books, introductions, documentation, periodicals, journals, and conference proceedings. Introductions to Scheme: The following four books from MIT Press are listed in order of increasing difficulty. The first is good for the complete novice, the second for students with little or no previous exposure to programming, and the third and fourth for more advanced students. The third and fourth may also be used to learn a variety of powerful programming language concepts. One of these books will suit your needs. 1. 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.) 2. Brian Harvey and Matthew Wright "Simply Scheme: Introducing Computer Science" MIT Press, Cambridge, MA, 1994. 583 pages. ISBN 0-262-08226-8. $49.95. This book is ideal for students with little or no previous exposure to programming. The book is designed to be used before SICP (the authors call it a SICP "prequel"), and makes Scheme fun by sheltering the students from potentially confusing technical details. Unlike Pascal or C, the emphasis is on ideas, not obscure matters of syntax and arbitrary rules of style. High schools who have shied away from using Scheme because they found SICP to be too challenging should consider using this book instead. The text gradually and gently introduces students to some of the key concepts of programming in Scheme. It starts off with functions and function composition and continues with the notion of functions as data (first-class functions) and programs that write programs (higher-order functions). Since the complexity of the language is hidden, students can get involved in some of the more interesting and fun aspects of the language earlier than in other texts. Then the book progresses through the more complicated concepts of lambda, recursion, data abstraction and procedural abstraction, and concludes with sequential techniques, but with careful attention to topics students often find difficult. There are five chapters on recursion alone! There's also a pitfalls section at the end of most chapters to help students recognize and avoid common errors. The book uses several programs as examples, including a tic-tac-toe program, a pattern matcher, a miniature spreadsheet, and a simple database program. Source code for the programs is available by anonymous ftp from anarres.cs.berkeley.edu:/pub/scheme/, or for $10 on IBM or Macintosh diskettes from the publisher. 3. 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, $55. The teacher's manual, which is also available from MIT Press (ISBN 0-262-51046-4 $20), does NOT contain solutions to the exercises, but does contain hints on teaching with the book. Starts off introductory, but rapidly gets into powerful Lisp-particular constructs, such as using closures, building interpreters, compilers and object-oriented systems. Often referred to by its acronym, SICP, which is pronounced "Sick-Pee". This is the classical text for teaching program design using Scheme, and everybody should read it at least once. MIT problem sets are available from the repositories, and materials from Gustavus Adolphus College are available from ftp.gac.edu:/pub/SICP/. 4. George Springer and Daniel P. Friedman "Scheme and the Art of Programming" MIT Press and McGraw Hill, 1990, 596 pages. ISBN 0-262-19288-8, $50. Introduces basic concepts of programming in Scheme. Also deals with object oriented programming, co-routining, continuations. Gives numerous examples. Has more of an emphasis on teaching Scheme than SICP, and can be seen as an alternative to SICP. Source code from the chapters is available from ftp.cs.indiana.edu:/pub/scheme-repository/lit/sap/ 5. Iain Ferguson, Edward Martin, and Burt Kaufman "The Schemer's Guide" Schemer's Inc. (see EdScheme entry in [2-2]). 328 pages ($30). Maintains a very down-to-earth approach. Good for use in teaching Scheme to high school students. Older Introductions to Scheme: 1. Smith, Jerry D. "Introduction to Scheme" Prentice Hall (Englewood Cliffs, NJ), 1988, 324 pages. Focuses on PC Scheme. 2. Michael Eisenberg "Programming in Scheme" Scientific Press (Redwood City, CA), 1988. 304 pages. 3. Two articles in BYTE Magazine, February 1988, by Abelson and Sussman, and Clinger. Online Introductions to Scheme: 1. The Ken Dickey article, "The Scheme Programming Language", in COMPUTER LANGUAGES magazine, June 1992, is available from the Scheme Repository at ftp.cs.indiana.edu:/pub/scheme-repository/txt/intro.txt The Revised^4 Report on the Algorithmic Language Scheme is also available from the Scheme Repository. 2. The Info files from the MIT Scheme implementation. 3. "Introductory Scheme" by Joseph W. Lavinus and James D. Arthur, . Available from the Lisp Utilities Repository as ftp.cs.cmu.edu:/user/ai/lang/scheme/doc/intro/ as schemedoc.tar.gz. Scheme and Artificial Intelligence: 1. 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 ftp.cs.indiana.edu:/pub/scheme-repository/lit/ as aibook.tar.Z. Some of the programs will only run under MacScheme. 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. (jlz@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. See also the Scheme Bibliography from the Scheme Repository (ftp.cs.indiana.edu:/pub/scheme-repository/) for additional readings. A large number of technical reports on Scheme are now available in the text section (ftp.cs.indiana.edu:/pub/scheme-repository/txt/). ---------------------------------------------------------------- Subject: [1-4] Where can I learn about implementing Scheme interpreters and compilers? There is no single book that is really comprehensive, so you will have to combine reading the sources to the various free implementations (e.g., Gambit [Feeley] and S48 [Rees]) with bits and pieces of tech reports and various books. 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, $55. 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 ftp.cs.indiana.edu:/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). 9. Christian Queinnec "Les Langages Lisp" InterEditions (in French), 1994. 500 pages. ISBN 2-7296-0549-5, 61-2448-1. (?) The book covers Lisp, Scheme and other related dialects, their interpretation, semantics and compilation. All of the programs described in the book are available by anonymous ftp from ftp.inria.fr:/INRIA/Projects/icsla/Books/LiSP94Sep05.tar.gz For more information, see the book's URL file://ftp.inria.fr/INRIA/Projects/icsla/WWW/LiSP.html or contact the author at Christian.Queinnec@inria.fr Technical reports and journal articles about Scheme implementation include: Mitchell Wand and Daniel P. Friedman, "Compiling Lambda Expressions Using Continuations and Factorizations", Journal of Computer Languages 3(1978), 241-263. Guy Lewis Steele Jr., "Rabbit: A Compiler for Scheme", MIT AI Memo 474, Massachusetts Institute of Technology, Cambridge, MA, May 1978. Guy Lewis Steele Jr., "Compiler Optimization Based on Viewing LAMBDA as RENAME + GOTO", in "Artificial Intelligence: An MIT Perspective", Patrick Henry Winston and Richard Henry Brown (eds.), MIT Press, Cambridge, MA, 1980. Jonathan A. Rees and Norman I. Adams, "T: A Dialect of Lisp or, LAMBDA: The Ultimate Software Tool", Conference Record of the 1982 ACM Symposium on Lisp and Functional Programming, 1982, 114-122. R. Kent Dybvig, "C-Scheme", Computer Science Department Technical Report #149 (MS Thesis), Indiana University, Bloomington, IA, 1983. William Clinger, "The Scheme 311 compiler: An Exercise in Denotational Semantics", Conference Record of the 1984 ACM Symposium on Lisp and Functional Programming, 1984, 356-364. Guillermo J. Rozas, "Liar, an Algol-like Compiler for Scheme", S.B. Thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, January 1984. David H. Bartley and John C. Jensen, "The Implementation of PC Scheme", Proceedings of the 1986 ACM Conference on Lisp and Functional Programming, 1986, 86-93. David Kranz, Richard Kelsey, Jonathan A. Rees, Paul Hudak, James Philbin and Norman I. Adams, "Orbit: An Optimizing Compiler for Scheme", Proceedings of the SIGPLAN Notices '86 Symposium on Compiler Construction, June 1986, 219-233. Published as SIGPLAN Notices 21(7), July 1986. Marc Feeley, "Deux Approches a' L'implantation du Language Scheme", M.Sc. Thesis, De'partement d'Informatique et de Recherche Ope'rationelle, University of Montreal, May 1986. R. Kent Dybvig, "Three Implementation Models for Scheme", Department of Computer Science Technical Report #87-011 (Ph.D. Dissertation), University of North Carolina at Chapel Hill, Chapel Hill, North Carolina, April 1987. William D. Clinger, Anne H. Hartheimer and Eric M. Ost, "Implementation Strategies for Continuations", Conference Record of the 1988 ACM Conference on Lisp and Functional Programming, August 1988, 124-131. David Kranz, "Orbit: An Optimizing Compiler for Scheme", Computer Science Technical report #632 (Ph.D. Dissertation), Yale University, 1988. Joel F. Bartlett, "SCHEME->C a Portable Scheme-to-C Compiler", Research Report 89/1, Dec. Western Research Laboratory, Palo Alto, CA, January 1989. Marc Feeley and James S. Miller, "A Parallel Virtual Machine for Efficient Scheme Compilation", Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, Nice, France, June 1990. Chris Hanson, "Efficient Stack Allocation for Tail-Recursive Languages", Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, Nice, France, June 1990. Robert Hieb, R. Kent Dybvig and Carl Bruggeman, "Representing Control in the Presence of First-Class Continuations", Proceedings of the SIGPLAN Notices '90 Conference on Programming Language Design and Implementation, White Plains, New York, June 1990, 66-77. Guillermo Rozas, "Taming the Y Operator", Proceedings of the 1992 ACM Conference on Lisp and Functional Programming, San Francisco, CA, June 1992, 226-234. Dan Teodosiu, "HARE: An Optimizing Portable Compiler for Scheme", ACM Sigplan Notices 26(1), January 1991. ---------------------------------------------------------------- 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, swiss-ftp.ai.mit.edu and ftp.cs.indiana.edu. A HTML version is available as ftp://swiss-ftp.ai.mit.edu/pub/scm/HTML/r4rs_toc.html or http://www.maths.tcd.ie/scrg/scheme/index.html 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. BOS (Bryan's Object System) is a very small object system for Scheme. It is based around generic functions and multiple inheritance. BOS provides more or less the same features as Meroon and the Tiny CLOS base language. Even though it has not been optimised, it should be quite a bit faster than those because it does not include a MOP. BOS has been tested under Scheme 48 and SCM, and should run under any fairly modern Scheme implementation (especially any which runs SLIB) with little or no change. It is available by anonymous ftp from ftp.maths.tcd.ie:/pub/bosullvn/misc/bos.tar.gz and the CMU AI Repository in ftp.cs.cmu.edu:/user/ai/lang/scheme/oop/bos/ For more information, write to Bryan O'Sullivan . 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 with support for multimethods. MEROON also offers indexed fields subsuming Scheme vectors without inheritance restrictions. Meroon runs in Scheme->C, PC-Scheme, Chez Scheme, Elk, Bigloo, SCM with SLIB, and MacGambit. MEROON sources and documentation may be found in the Scheme Repository as ftp.cs.indiana.edu:/pub/scheme-repository/new/meroon.*.tar.Z and also from ftp.inria.fr:/pub/INRIA/icsla/Programs/MeroonV3*.tar.gz [128.93.1.26] The file meroonet*.tar.gz is a toy version of meroon. For more information, contact Christian Queinnec or . SCOOPS (Scheme Object Oriented Programming System) is an object system for Scheme written by Amitabh Srivastava/Texas Instruments with re-writes by Steve Sherin . [Email to this address bounced 7/7/93.] This package needs first-class environments. It is available from the Scheme Repository as /pub/scheme-repository/scm/scoops.sha. Tiny CLOS is a Scheme implementation of a `kernelized' CLOS, with a metaobject protocol. The implementation is even simpler than the simple CLOS found in `The Art of the Metaobject Protocol,' weighing in at around 850 lines of code, including (some) comments and documentation. Tiny CLOS is available by anonymous ftp from parcftp.xerox.com:/pub/mops/. Tiny CLOS runs in MIT Scheme 11.74 and should run with only minor modifications in other Schemes as well. If you want to be added to the mops@parc.xerox.com mailing list (technical questions and discussion only), send mail to Gregor Kiczales . 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-repository/txt/swob.txt. YASOS is also included as part of SLIB. For further information, contact Ken Dickey . ---------------------------------------------------------------- Subject: [1-9] Repositories of Scheme Software There are several repositories of publicly redistributable and public domain Scheme code. CMU AI Repository, Scheme Section: The Scheme Section of the CMU Artificial Intelligence Repository is accessible by anonymous ftp to ftp.cs.cmu.edu:/user/ai/lang/scheme/ [128.2.206.173] through the AFS directory /afs/cs.cmu.edu/project/ai-repository/ai/lang/scheme/ or by WWW from the URL http://www.cs.cmu.edu:8001/Web/Groups/AI/html/repository.html and includes more than 200 megabytes of sources and other materials of interest to Scheme programmers, including all freely distributable implementations and many programs. Unlike the Scheme Repository at Indiana University, the entire contents of the CMU AI Repository has been keyword indexed to provide convenient browsing of the contents. The repository has standardized on using 'tar' for producing archives of files and 'gzip' for compression. To search the keyword index by mail, send a message to: ai+query@cs.cmu.edu with one or more lines containing calls to the keys command, such as: keys scheme awk in the message body. Keywords may be regular expressions and are compared with the index in a case-insensitive conjunctive fashion. You'll get a response by return mail. Do not include anything else in the Subject line of the message or in the message body. For help on the query mail server, include: help instead. A Mosaic interface to the keyword searching program is in the works. We also plan to make the source code (including indexes) to this program available, as soon as it is stable. Most of the Scheme Section of the AI Repository appears on Prime Time Freeware for AI, Issue 1-1, a mixed-media book/CD-ROM publication. It includes two ISO-9660 CD-ROMs bound into a 224 page book and sells (list) for US$60 plus applicable sales tax and shipping and handling charges. Payable through Visa, Mastercard, postal money orders in US funds, and checks in US funds drawn on a US bank. For more information write to Prime Time Freeware, 370 Altair Way, Suite 150, Sunnyvale, CA 94086 USA, call 408-433-9662, 408-433-0727 (fax), or send email to ptf@cfcl.com. Contributions of software and other materials are always welcome but must be accompanied by an unambiguous copyright statement that grants permission for free use, copying, and distribution -- either a declaration by the author that the materials are in the public domain, that the materials are subject to the GNU General Public License (cite version), or that the materials are subject to copyright, but the copyright holder grants permission for free use, copying, and distribution. (We will tell you if the copying permissions are too restrictive for us to include the materials in the repository.) Inclusion of materials in the repository does not modify their copyright status in any way. Materials may be placed in: ftp.cs.cmu.edu:/user/ai/new/ When you put anything in this directory, please send mail to ai+contrib@cs.cmu.edu giving us permission to distribute the files, and state whether this permission is just for the AI Repository, or also includes publication on the CD-ROM version (Prime Time Freeware for AI). We would also appreciate if you would include a 0.doc file for your package; see /user/ai/new/package.doc for a template. (If you don't have the time to write your own, we can write it for you based on the information in your package.) The Scheme Section of the AI Repository is maintained by Mark Kantrowitz . Scheme Repository at Indiana University: The Scheme Repository at Indiana University contains a Scheme bibliography, copies of the R4RS report 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/R4RS compliance test, an implementation of matrices, a Scheme implementation of the Common Lisp FORMAT function, a Scheme front end to Adobe Illustrator PostScript, and a LALR(1) parser (ZEBU). The repository was established by Ozan S. Yigit and is currently maintained by David Eby and John Zuckerman. Send administrative requests to scheme-repository-request@cs.indiana.edu The repository is accessible by anonymous ftp at ftp.cs.indiana.edu:/pub/scheme-repository/ [129.79.254.191] The repository is mirrored in INRIA, courtesy of Christian Queinnec [Ecole Polytechnique and INRIA-Rocquencourt], ftp.inria.fr:/lang/Scheme/ and also faui80.informatik.uni-erlangen.de:/pub/scheme/yorku Other Scheme Collections: Scheme Implementations may also be found at swiss-ftp.ai.mit.edu:/archive/ The R4RS report is available in swiss-ftp.ai.mit.edu:/archive/scheme-reports/ or as MIT AI Memo 848b (email publications@ai.mit.edu for more information). The swiss-ftp archive includes SCOOPS, CL2Scheme, extend-syntax, btree, Gabriel benchmarks, FORMAT for Scheme, etc. The GI (German Computer Science Society) Scheme Archive contains a variety of scheme programs, utilities, code from theses, and other materials. It also mirrors the Scheme Repository. It is accessible by anonymous ftp to faui80.informatik.uni-erlangen.de (login as 'ftp', giving your email address as the password). pub/scheme/gi # GI Scheme Archive pub/scheme/yorku # Internet Scheme Repository Direct questions to scheme@faui80.informatik.uni-erlangen.de. The GI Scheme Archive is supported by the German Computer Society Special Interest Group on AI programming and sponsored by the Bavarian AI Center FORWISS -- Research Institute for Knowledge Based Systems. ---------------------------------------------------------------- Subject: [1-10] Publicly Redistributable Scheme Software SLIB (Standard Scheme Library) is a portable scheme library that provides compatibility and utility functions for many of the standard scheme implementations, including Chez, ELK 2.1, GAMBIT, MITScheme, scheme->C, Scheme48, T3.1, VSCM and Scm4e. It is available by anonymous ftp from swiss-ftp.ai.mit.edu:/archive/scm/slib2a1.tar.gz prep.ai.mit.edu:/pub/gnu/jacal/slib2a1.tar.gz ftp.cs.indiana.edu:/pub/scheme-repository/new/slib2a1.tar.gz Now includes a FAQ file. TEST.SCM is an IEEE and R4RS conformance test suite. It is available from swiss-ftp.ai.mit.edu:/archive/scm/test.scm prep.ai.mit.edu:/pub/gnu/jacal/test.scm ftp.cs.indiana.edu:/pub/scheme-repository/new/test.scm PSD (Portable Scheme Debugger) is available by anonymous ftp from Tampere University of Technology, Finland, ftp.cs.tut.fi:/pub/src/languages/schemes/psd-1.1.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, pk@cs.tut.fi The Lisp Pointers article describing PSD (Lisp Pointers VI(1):15-23, January-March 1993) is available as http://www.cs.tut.fi/staff/pk/scheme/psd/article/article.html SCLINT is a lint-like program for Scheme. It checks for consistency of indentation, syntax of special forms, and the number of arguments to primitive and most user-defined procedures. This is not a full implementation, but rather a quick hack. It is used in teaching programming at the Tampere University of Technology. It is available by anonymous ftp from ftp.cs.tut.fi:/pub/src/languages/schemes/sclint-0.9.tar.Z. For further information, write to Pertti Kellom\"aki . 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, . [Email bounced, 7/7/93.] 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 ftp.cs.tut.fi:/pub/src/languages/schemes/ as the file scheme-algorithms.tar. For more information, contact Pertti Kellom\"aki . 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] ftp.cs.indiana.edu:/pub/scheme-repository/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 publications@ai.mit.edu for more information). For more information, send email to Chris Hanson . 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 swiss-ftp.ai.mit.edu:/archive/scm/jacal1a4.tar.Z, prep.ai.mit.edu:/pub/gnu/jacal/jacal1a4.tar.Z, and ftp.cs.indiana.edu:/pub/scheme-repository/new/jacal1a4.tar.Z Contact jaffer@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 ftp.cs.indiana.edu:/pub/scheme-repository/scm/ 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 swiss-ftp.ai.mit.edu:/archive/Thomas For more information on Thomas and Dylan, see part 4 of the Lisp FAQ. MATCH is a pattern matching macro package for Scheme. Pattern matching allows complicated control decisions based on data structure to be expressed in a concise manner. This document describes several pattern matching macros for Scheme, and an associated mechanism for defining new forms of structured data. This macro package works with any Scheme that supports defmacro (which is obtainable by loading SLIB), such as Chez Scheme (release 4 or greater). MATCH is available by anonymous ftp from titan.cs.rice.edu:/public/wright/match.tar.Z [128.42.1.30] and includes the macro source code and documentation. A copy should be available from the Scheme Repository shortly. For further information, write to Andrew Wright, . Soft Scheme provides the benefits of static typing for dynamically typed Scheme. Like a static type checker, a soft type checker infers types for variables and expressions. But rather than reject programs containing untypable fragments, a soft type checker inserts explicit run-time checks to transform untypable programs to typable form. These run-time checks indicate potential program errors, enabling programmers to detect errors prior to program execution. Soft type checking minimizes the number of run-time checks in the compiled code, enabling dynamically typed languages to attain the efficiency of statically typed languages like ML. Soft Scheme is available by anonymous ftp from titan.cs.rice.edu:public/wright/softscheme.tar.Z [128.42.1.30] For more information, write to Andrew Wright . ChezSybase is a Chez Scheme interface to the Sybase database. It uses the Chez Scheme foreign function interface to provide a high-level Scheme interface to the Sybase db-lib (the API to the Sybase database). Most of the db-lib calls and datatypes are supported, with the possible exception of spotty support for text and image data, and there is no analog to the datetime datatype. It is available by anonymous ftp from ftp.cs.cmu.edu:/user/ai/lang/scheme/code/io/chez_syb/ For more information, write to Karl O. Pinc . ---------------------------------------------------------------- Subject: [1-11] 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:/public/dorai/slatex23.tar.gz Send bug reports to dorai@cs.rice.edu. SchemeWEB provides simple support for literate programming in Lisp. SchemeWEB version 2.0 is a Unix filter that allows you to generate both Lisp and LaTeX code from one source file. The generated LaTeX code formats Lisp programs in typewriter font obeying the spacing in the source file. Comments can include arbitrary LaTeX commands. SchemeWEB was originally developed for the Scheme dialect of Lisp, but it can easily be used with most other dialects. Version 2.0 is available in the Scheme Repository as ftp.cs.indiana.edu:/pub/scheme-repository/new/schemeweb.sh or in the Comprehensive TeX Archive Network (CTAN) in the directory ftp.shsu.edu:/tex-archive/web/schemeweb The Literate Programming FAQ lists a number of alternatives, both language-independent and Scheme-specific. The Literate Programming FAQ is posted once a quarter to the comp.literate.programming newsgroup and is available by anonymous ftp from rtfm.mit.edu. A copy may also be requested by sending an email message to fileserv@shsu.edu sendme litprog.faq in the body of the message. ---------------------------------------------------------------- Subject: [1-12] 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 ftp.cpsc.ucalgary.ca:/pub/projects/prolog1.2/prolog12.tar.Z Questions and comments may be addressed to Alan Dewar or John Cleary . Schelog is an embedding of Prolog in Scheme. It represents Prolog goals as procedures in Scheme, and includes macros to simulate a Prolog-style syntax for clauses, relations and queries. The embedding permits the user to combine Prolog and Scheme code freely, in the same s-expression, if desired. Documentation and examples are included. Schelog should run in any R4RS Scheme, has been tested in SCM and Chez Scheme, and will run in any Scheme implementation that supports SLIB (see entry in [1-10] above). Schelog (version 2) is available by anonymous ftp from titan.cs.rice.edu:/public/dorai/schelog2.tar.Z. Its use of higher-order continuations is probably a major obstacle to porting it to Common Lisp. For more information, please contact the author Dorai Sitaram . ---------------------------------------------------------------- Subject: [1-13] 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". EOPL Essentials of Programming Languages 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. ---------------------------------------------------------------- Subject: [1-14] Why is there no EVAL in Scheme? The answer to this question is based on information provided by Guillermo J. Rozas and Aubrey Jaffer. There are three major positions in the Scheme community regarding EVAL: 1. No EVAL: EVAL is antithetical to a Pascal-like (compiler based, externally statically linked) implementation for Scheme, such as some people have or wish to see. 2. Single Argument: There is a single distinguished top-level environment, and EVAL always evaluates its argument there. (This is the approach taken in Common Lisp, where EVAL evaluates its argument in the current dynamic environment and in a null lexical environment.) 3. Two Arguments: There are multiple environments in which the user might want to evaluate expressions, so EVAL should take two arguments, the second being an environment. In particular, in some systems with first-class environments, there is no a-priori single distinguished top-level environment, and defaulting the environment does not fit those dialects well. Not every dialect of Scheme has EVAL. Most do, but some with different names and arguments. Jaffer's SLIB package uses LOAD as defined in R4RS to define EVAL for those implementations that don't support EVAL (e.g., by writing the code out to a file and then loading it). Rozas's compromise proposal for EVAL was accepted for R5RS, but it is unclear whether there will ever be a R5RS. ---------------------------------------------------------------- Subject: [1-15] World-Wide Web (WWW) Resources The World Wide Web (WWW) is a hypermedia document that spans the Internet. It uses the http (HyperText Transfer Protocol) for the light-weight exchange of files over the Internet. NCSA Mosaic is a World Wide Web browser developed at the National Center for Supercomputing Applications (NCSA). Mosaic's popularity derives, in part, from its ability to communicate using more traditional Internet protocols like FTP, Gopher, WAIS, and NNTP, in addition to http. Mosaic can display text, hypertext links, and inlined graphics directly. When Mosaic encounters a file type it can't handle internally, such as Postscript documents, mpeg movies, sound files, and JPEG images, it uses an external viewer (or player) like Ghostscript to handle the file. Mosaic also includes facilities for exploring the Internet. In other words, Mosaic is an multimedia interface to the Internet. The hypertext documents viewed with Mosaic are written in HTML (HyperText Markup Language), which is a subset of SGML (Standard Generalized Markup Language). All that is needed is just a few more improvements, such as the ability to format tables and mathematics, and a WYSIWYG editor, for HTML to greatly facilitate electronic journals and other publications. NCSA Mosaic for the X Window System is available by anonymous ftp from ftp.ncsa.uiuc.edu:/Mosaic/ as source code and binaries for Sun, SGI, IBM RS/6000, DEC Alpha OSF/1, DEC Ultrix, and HP-UX. Questions about NCSA Mosaic should be directed to mosaic-x@ncsa.uiuc.edu (X-Windows version), mosaic-mac@ncsa.uiuc.edu (Macintosh), and mosaic-win@ncsa.uiuc.edu (Microsoft Windows). A simple HTML version of the Scheme FAQ (this FAQ) is available as http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/scheme/top.html The Scheme home page at MIT is http://www-swiss.ai.mit.edu/scheme-home.html It includes a nifty little form that lets you execute small examples of Scheme code. The Scheme Underground web page is http://www.ai.mit.edu/projects/su/su.html ---------------------------------------------------------------- Subject: [1-16] Why is Scheme called 'Scheme'? According to Steele and Gabriel's "The Evolution of Lisp" paper, Scheme was originally called Schemer, in the tradition of the AI languages Planner and Conniver. But the ITS operating system had a 6-character limitation of file names, so the names were shortened to PLNR, CNVR, and SCHEME. Eventually the truncated name Scheme stuck. ---------------------------------------------------------------- ;;; *EOF* From csus.edu!sacsa3.mp.usbr.gov!borcore.usbr.gov!csn!magnus.acs.ohio-state.edu!math.ohio-state.edu!usc!bloom-beacon.mit.edu!uhog.mit.edu!nntp.club.cc.cmu.edu!cantaloupe.srv.cs.cmu.edu!mkant Fri Nov 18 05:20:02 1994 Path: csus.edu!sacsa3.mp.usbr.gov!borcore.usbr.gov!csn!magnus.acs.ohio-state.edu!math.ohio-state.edu!usc!bloom-beacon.mit.edu!uhog.mit.edu!nntp.club.cc.cmu.edu!cantaloupe.srv.cs.cmu.edu!mkant From: mkant+@cs.cmu.edu (Mark Kantrowitz) Newsgroups: comp.lang.scheme,comp.lang.lisp,news.answers,comp.answers Subject: FAQ: Scheme Implementations and Mailing Lists 2/2 [Monthly posting] Supersedes: Followup-To: poster Date: 13 Nov 1994 08:03:05 GMT Organization: Carnegie-Mellon University, School of Computer Science Lines: 627 Approved: news-answers-request@MIT.Edu Distribution: world Expires: 25 Dec 1994 08:00:25 GMT Message-ID: References: Reply-To: ai+lisp-faq@cs.cmu.edu NNTP-Posting-Host: glinda.oz.cs.cmu.edu Xref: csus.edu comp.lang.scheme:9672 comp.lang.lisp:12000 news.answers:32026 comp.answers:8298 Archive-name: scheme-faq/part2 Last-Modified: Thu Nov 3 13:59:54 1994 by Mark Kantrowitz Version: 1.15 Maintainer: Mark Kantrowitz and Barry Margolin URL: http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/scheme/top.html Size: 36027 bytes, 635 lines ;;; **************************************************************** ;;; Answers to Frequently Asked Questions about Scheme ************* ;;; **************************************************************** ;;; Written by Mark Kantrowitz and Barry Margolin ;;; scheme_2.faq This post contains part 2 of 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 ai+lisp-faq@cs.cmu.edu. Topics Covered (Part 2): [2-1] Free Scheme implementations. [2-2] Commercial Scheme implementations. [2-3] What Scheme-related discussion groups and mailing lists exist? Search for \[#\] to get to question number # quickly. ---------------------------------------------------------------- Subject: [2-1] 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, .z, .arc, .fit, etc.) to use binary mode for retrieving the files. Files that end with a .z suffix were compressed with the patent-free gzip (no relation to zip). Source for gzip is available from: prep.ai.mit.edu:/pub/gnu/ as the files gzip-1.2.3.shar, gzip-1.2.3.tar,or gzip-1.2.3.msdos.exe. Repositories of Scheme implementations: Many free Scheme implementations are available from swiss-ftp.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 most free implementations. (Implementations of Scheme available from the repository include elk, gambit, scm, fools, rabbit, s48, scheme84, scheme88, pseudo, xscheme, umb-scheme, siod, vscm, and pixiescheme.) The repository was established by Ozan S. Yigit and is currently maintained by David Eby and John Zuckerman . The repository is accessible by anonymous ftp at ftp.cs.indiana.edu:/pub/scheme-repository/ [129.79.254.191] The repository is mirrored in INRIA, courtesy of Christian Queinnec [Ecole Polytechnique and INRIA-Rocquencourt], ftp.inria.fr:/lang/Scheme. (See also [1-9].) Scheme implementations: BIGLOO is a Scheme interpreter and compiler. It conforms to the IEEE-Scheme standard (IEEE P1178) with some extensions, such as regular expression parsing (RGC), a lexical analyzer generator, a full foreign function interface, and a pattern matching compiler. Bigloo can also compile modules written in Caml (an ML dialect), letting you mix Scheme, ML, and C. Object-oriented programming is provided by Meroon v3. The main goal of Bigloo is to deliver small and fast stand alone applications. Bigloo produces ANSI C and hence should be easy to port. It runs on Sparc (1, 2, 10), SONY-NEWS (MIPS R3000), IRIS Indigo (MIPS R3000), Sun 3/60, DecStation 3100, PC-486 (linux), and HP-PA (730). It is available by anonymous ftp from ftp.inria.fr:/INRIA/Projects/icsla/Implementations/ [192.93.2.54] as the files bigloo1.6.tar.gz and camloo0.0.tar.gz. For further information, send email to Manuel.Serrano@inria.fr, or write to Manuel Serrano (equipe ICSLA, Bat 8), INRIA-Rocquencourt, BP 105, 78153, Le Chesnay CEDEX, FRANCE, or call 39-63-57-32. Elk (Extension Language Kit) is a Scheme interpreter designed to be used as a general extension language for applications written in C or C++. Elk can also be used as a stand-alone implementation of the Scheme programming language. It is mostly R4RS and P1178 conformant (with the exception of the number system and a few minor details). It has interfaces to Xlib, Xt, and the Athena and OSF/Motif widget sets. It includes dynamic incremental linking of C object files, an optional foreign function interface, and a generational garbage collector (by Marco Scheibe ). It can also dump an image of a fully customized application into a new executable file. Elk is available by anonymous ftp from tub.cs.tu-berlin.de:/pub/elk/ It is also available from the Scheme Repository in ftp.cs.indiana.edu:/pub/scheme-repository/imp/ and in the X contrib directory on ftp.x.org (formerly export.lcs.mit.edu). 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. Implemented by Oliver Laumann and Carsten Bormann . 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 ). 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, . Fools' Lisp is a small Scheme interpreter that is R4RS conformant, and is available by anonymous ftp from scam.berkeley.edu:/pub/src/local/fools.1.3.2.tar.Z [128.32.138.1] Fools' Lisp runs on Sun3 and Sun4 (SunOs), DecStation 3100s, Vax (Ultrix), Sequent, and Apollo. Implemented by Jonathan Lee . 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 ftp.iro.umontreal.ca:/pub/parallele/gambit/ [132.204.32.22] 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 ftp.cs.indiana.edu:/pub/scheme-repository/imp/, but the most recent version will always be available from ftp.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 gambit@trex.iro.umontreal.ca. Gambit Scheme was written by Marc Feeley . 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). HELP (a lazy Scheme) is available by anonymous ftp from sumex-aim.stanford.edu:/info-mac/lang/lazy-scheme.hqx. Written by Thomas Schiex (schiex@cert.fr, schiex@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. LIBSCHEME is a C library implementing Scheme as described in R4RS. It is easily integrated into a C program as a command interpreter or extension language, and is easily extended in C with new primitive types, primitve functions and syntax. It should be portable to most machines with an ANSI C compiler. It is available by anonymous ftp from ftp.cs.indiana.edu:/pub/scheme-repository/imp/ For more information, write to Brent Benson . MIT Scheme (aka C-Scheme), is available free by anonymous FTP from martigny.ai.mit.edu:/archive/scheme-7.3 [18.43.0.152] Version 7.3 is a beta version and runs on DEC Alpha, DECStation (MIPS), HP 9000 300/400/700, IBM RS-6000, Intel i386/i486 (DOS, NT, Windows 3.1, or Linux), NeXT (NeXTOS 2 or 3), SGI (MIPS), Sony NEWS (MIPS), Sun3 (SunOS 4.1) and Sun4 (SunOS 4.1). Bugs should be reported to bug-cscheme@martigny.ai.mit.edu (for the DOS version, send bug reports to bug-cscheme-dos@martigny.ai.mit.edu). MIT Scheme includes Edwin (Scheme's Emacs-like editor) and Liar (the Scheme compiler). 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. Discussion occurs on the newsgroup comp.lang.scheme.c (gatewayed to the mailing list info-cscheme@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:/pub/next/scheme/ Europeans can get it more locally from ftp.informatik.uni-muenchen.de:/pub/next/ProgLang/ start with Schematik-1.1.5.1.README . Schematik is also apparently included on NeXT's "Educational Software Sampler" CD-ROM. | A preliminary unofficial port of C-Scheme to the Linux is available from artemide.dei.unipd.it:/linux/scheme-7.2/. Contact the author Matteo Frigo for more information. Oaklisp is an seamless integration of Scheme with an object-oriented substrate. Available by anonymous ftp from f.gp.cs.cmu.edu:/usr/bap/oak/ftpable/ [128.2.250.164] or from ftp.cs.cmu.edu:/afs/cs.cmu.edu/user/bap/oak/ftpable/ and includes reference and implementation manuals. Written by Barak Pearlmutter and Kevin Lang . PC-Scheme (aka PCScheme, PC Scheme) is an implementation of Scheme originally written by Texas Instruments. TI made a version of the source code freely distributable in 1987. TI stopped supporting the code, and some researchers at the University of Geneva produced a cleaned-up version (see PCS/Geneva below). On July 13, 1992, Ibuki announced that it had purchased the rights to PC Scheme from TI. Please see the Ibuki PC Scheme entry in [2-2]. If you want a high-quality and supported implementation of PC Scheme, buy the Ibuki implementation. It is certainly inexpensive enough. Now TI PC-Scheme is available by anonymous ftp from swiss-ftp.ai.mit.edu:/archive/pc-scheme/ and runs on MS-DOS 286/386 IBM PCs and compatibles. Version 3.3 should run on the 486, but no guarantees. Version 3.3 is the last free version. TI PC-Scheme conforms to the Revised^3 Report on Scheme. It includes an optimizing compiler, an emacs-like editor, inspector, debugger, performance testing, foreign function interface, window system and an object-oriented subsystem. It also supports the dialect used in Abelson and Sussman's SICP. 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, mouse support, assembly-level interfacing, and several powerful Scheme-oriented editors. (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.) PCS/Geneva 4.02PL1 has been tested on XTs, ATs, AT386s and AT486s under various DOS and OS/2 versions. It even runs on Hewlett-Packard's HP95LX. It also runs on Suns with a DOS emulator. PCS/Geneva is available free by anonymous ftp from cui.unige.ch:/PUBLIC/pcs/ [129.194.70.1] as the files pcscheme.doc, pcscheme.exe, pcscheme.fil and pcscheme.taz or by email (uuencoded) from schemege@cui.unige.ch. If you ftp PCS/Geneva, please send mail to schemege@cui.unige.ch; the authors like to know their public and will inform you when a new release is available. This is also the email address for bug reports or if you need any kind of help. This product may be distributed freely and used without restrictions except for military purposes. (PCS/Geneva was developed by Larry Bartholdi and Marc Vuilleumier .) 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 , 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. Scheme->C is an R4RS compliant Scheme system that is centered around a compiler that compiles Scheme to C. Besides the base language, the system includes "expansion passing style" macros, a foreign function call capability, records, weak pointers, 3 X11 interfaces, call/cc, and a generational, conservative, copying garbage collector. The result is a system that is portable, efficient, and able to build applications that contain a mix of compiled and interpreted Scheme, and compiled code from C, C++ and other languages. The current release of Scheme->C runs on the following systems: Digital Alpha AXP systems with OSF/1, MIPS based DECstations, VAXen with ULTRIX, MIPS based SGI systems, PC's running Microsoft Windows 3.1, Apple Macintosh's running system 7.1, HP 9000/300, HP 9000/700, Sony News, Harris Nighthawk and other m88k systems, linux, and Sun SPARC. Earlier releases also run on Sun3, DNx500, DN1000, 386's running Unix, DNx500, and DN1000 systems. The software is available for anonymous ftp from gatekeeper.dec.com:/pub/DEC/Scheme-to-C/ [16.1.0.2] There are three interfaces to X11, all written in Scheme, available from gatekeeper. The first is a complete set of stubs to Xlib included in the base system. The second is an alternative to Xlib called SCIX, found in gatekeeper.dec.com:/pub/X11/contrib/ The third, ezd, allows programs to easily produce interactive, structured graphics and is found in gatekeeper.dec.com:/pub/DEC/ezd/ Those without ftp access can also obtain Scheme->C and ezd from the Prime Time Freeware CD, Vol. 1, No. 2. Additional information is available from the author at Digital Equipment Corporation's Western Research Lab: Joel Bartlett, bartlett@decwrl.dec.com. Scheme 48 is a Scheme implementation based on a virtual machine architecture. Scheme 48 is designed to be straightforward, flexible, reliable, and fast. It should be easily portable to 32-bit byte-addressed machines that have POSIX and ANSI C support. In addition to the usual Scheme built-in procedures and a development environment, library software includes support for hygienic macros (as described in the Revised^4 Scheme report), multitasking, records, exception handling, hash tables, arrays, weak pointers, and FORMAT. Scheme 48 implements and exploits an experimental module system loosely derived from Standard ML and Scheme Xerox. The development environment supports interactive changes to modules and interfaces. A beta release of Scheme 48 is available by anonymous ftp from ftp.cs.indiana.edu:/pub/scheme-repository/imp/scheme48-0.36.tar.Z martigny.ai.mit.edu:/archive/s48/scheme48-0.36.tar.gz ftp.cs.cmu.edu:/user/ai/lang/scheme/impl/s48/scheme48.tar.gz For more information, contact Richard Kelsey and Jonathan Rees at . SCM, free by anonymous ftp from swiss-ftp.ai.mit.edu:/archive/scm/ prep.ai.mit.edu:/pub/gnu/jacal/ ftp.cs.indiana.edu:/pub/scheme-repository/new/ ftp.maths.tcd.ie:/pub/bosullvn/jacal/ Current version 4e1. 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. Written by Aubrey Jaffer. To receive an IBM PC floppy disk with the source files and MSDOS and i386 executables send $99 to Aubrey Jaffer, 84 Pleasant Street, Wakefield MA 01880, . SLIB (Standard Scheme Library) is a portable Scheme library which is intended to provide compatability and utility functions for all standard Scheme implementations, including SCM, Chez, Elk, Gambit, MacScheme, MITScheme, scheme->C, Scheme48, T3.1, and VSCM, and is available as the file slib2a0.tar.gz. Written by Aubrey Jaffer. JACAL is a symbolic math system written in Scheme, and is available as the file jacal1a4.tar.gz. SCMCONFIG contains additional files for the SCM distribution to build SCM on Unix machines using GNU autoconf. SLIB-PSD is a portable debugger for Scheme (requires emacs editor). TURTLSCM is a turtle graphics package which works with SCM on MSDOS or X11 machines. Written by Mkinen Sami and Jarkko Leppanen , it is available as the file turtlegr.tar.Z. (Also available from modeemi.cs.tut.fi:/pub/scm/ as turtlegr.tar.gz, along with an already-compiled MSDOS binary of scm with turtlegraphics and slib in scm4c0_b.zip.) XSCM is an X Windows 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 swiss-ftp, prep and indiana as the file xscm1.05.tar.Z. Contact campbell@redsox.bsw.com for more information. SMG-SCM is a package that adds VMS SMG screen management routines to SCM. It is available from swiss-ftp, prep and indiana as the file sgm-scm2a1.zip. (A VMS version of Unzip is available by anonymous FTP from ftp.spc.edu:[ANONYMOUS.MACRO32]UNZIP.EXE.) This file contains the source code, documentation, and example code. Send comments and bugs to T. Kurt Bond, (preferred) or . WB is a disk based, sorted associative array C library (database). These associative arrays consist of variable length (less that 256 bytes) keys and values. WB comes with an interface to SCM. Basic operations are creation, destruction, opening and closing of diskfiles and arrays, insertion, deletion, retrieval, successor, and predecessor (with respect to dictionary order of keys). Functional application of find-next, deletion, and modification over a range of consecutive key values is supported. Multiple associative arrays can be stored in one disk file. Simultaneous access to multiple disk files is supported. A structure checker, garbage collector are included. A repair program and ram-disk type file (for temporary structures) are in developement. The current WB implementation has a file size limit of 2^32 * block size (default 2048) = 2^43 bytes (8796 Gbytes). WB does its own memory and disk management. WB is available on swiss-ftp, prep, and indiana as wb1a1.tar.z. A Windows version of Scheme called WinScm is forthcoming from Vincent Manis of Langara College of BC, Canada. 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 2 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 swiss-ftp.ai.mit.edu:/archive/scm/hobbit2.tar.Z prep.ai.mit.edu:/pub/gnu/jacal/hobbit2.tar.Z ftp.cs.indiana.edu:/pub/scheme-repository/new/hobbit2.tar.Z For further information, contact the author, Tanel Tammet, at or at Tanel Tammet, Department of Computer Sciences, Chalmers University of Technology, S-41296 Go"teborg, Sweden. Similix is a Self-Applicable Partial Evaluator for a Subset of Scheme. Written by Anders Bondorf, Olivier Danvy, and Jesper J{\o}rgensen. It is available by anonymous ftp from ftp.cs.indiana.edu:/pub/scheme-repository/imp/ as similix.tar.Z or from ftp.diku.dk:/pub/diku/dists/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 anders@diku.dk. Similix conforms to the IEEE and R4RS standards, but also runs under R3RS Scheme. It runs in SCM, Chez Scheme and T3.1. SIOD (Scheme in One Defun), free by anonymous ftp from ftp.cs.indiana.edu:/pub/scheme-repository/imp/siod-v3.0-shar ftp.std.com:/pub/gjc/siod-3.0-shar or in any comp.sources.unix archive. Runs on VAX/VMS, VAX UNIX, Sun3, Sun4, Amiga, Macintosh, MIPS, Cray, Windows NT/WIN32. 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 ~42K bytes of executable. Lisp calls C and C calls Lisp transparently. Version 3.0 includes support for manipulation of Oracle and Digital RDB relational databases (SQL interface). Written by George Carrette or . STk is a R4RS Scheme interpreter which can access the Tk graphical package. All of the commands defined by the Tk toolkit are available to the STk interpreter, and Tk variables are reflected back into Scheme as Scheme variables. Callback is expressed in Scheme. Includes a CLOS-like OO extension called STklos, which provides multiple inheritance, generic functions, multi methods, and a true meta-object protocol. A set of classes have been defined to manipulate Tk commands (menu, buttons, scales, canvas, canvas items) as Scheme objects. STk runs on Sparc (SUNOS 4.1.x), Dec 5xxx (Ultrix 4.2), SGI (Irix 4.05, 5.1.1), DEC Alpha, and Linux 1.0. STk is available by anonymous ftp from kaolin.unice.fr:/pub/STk-2.1.tar.gz [193.48.229.225] Please send bug reports, comments, and questions to Erick Gallesio, , Universite de Nice - Sophia Antipolis, ESSI - I3S Route des colles, BP 145, 06903 Sophia Antipolis CEDEX, FRANCE, phone (33) 92-96-51-53, fax (33) 92-96-51-55. To subscribe to the mailing list, send a message with subscribe in the Subject field to stk-request@kaolin.unice.fr. T3.1 is a Scheme-like language developed at Yale. Available by anonymous ftp from ftp.ai.mit.edu:/pub/systems/t3.1/ T may be obtained in Europe from nic.funet.fi:/pub/unix/languages/scheme/t3.1/ ftp.diku.dk:/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 t-project@cs.yale.edu. Bug reports should go to t3-bugs@cs.yale.edu. A multiprocessing version of T (for Encore Multimax) is available from masala.lcs.mit.edu:/pub/mult. [The sources were last modified November 22, 1991.] UMB Scheme is a R4RS Scheme available by anonymous ftp from ftp.cs.umb.edu:/pub/scheme/umb-scheme-2.10.tar.Z and also in the Scheme Repository. It includes a simple editor, debugger, Written by William Campbell, University of Massachusetts at Boston, bill@cs.umb.edu. VSCM is a R4RS Scheme available by anonymous ftp from the Scheme Repository, ftp.cs.indiana.edu:/pub/scheme-repository/imp/vscmV0r2.tar.Z [130.63.9.66] Written by Matthias Blume, . 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. The bytecode compiler is written in Scheme itself. Documentation of VSCM is also available as http://www.cs.princeton.edu/grad/Matthias_Blume/vscm.html XScheme is available free by anonymous ftp from ftp.uu.net:/MSDOS/languages/X-scheme ftp.uu.net:/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), dbetz@apple.com. XScheme is discussed in the newsgroup comp.lang.lisp.x. It may also be found in the Scheme Repository. 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 ftp.cs.cornell.edu:/pub/jar/pseudo-2-9.tar.gz swiss-ftp.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 (jar@altdorf.ai.mit.edu, jar@cs.cornell.edu). Send mail to info-clscheme-request@mc.lcs.mit.edu to be put on a mailing list for announcements. Conforms to R4RS 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 nlg@indiana.edu for more information. It will also run in Jeff Dalton's port of Franz Lisp to Net/Free/386BSD on 386-like machines. (See the Lisp FAQ for information on Franz Lisp.) Scheme84 is available by anonymous FTP from ftp://ftp.cs.indiana.edu/pub/scheme-repository/imp/scheme84.tar.gz Scheme88 is available by anonymous ftp from rice.edu:/public/scheme88.sh and also from the Scheme Repository. ---------------------------------------------------------------- Subject: [2-2] Commercial Scheme implementations. Chez Scheme Version 5 is a high-performance implementation of Scheme conforming to the IEEE/ANSI Scheme Standard and the R4RS. Chez Scheme provides an incremental optimizing compiler, complete run-time library, generation-based garbage collector, interactive inspector, and C interface. New Version 5 features include improved performance, lexical macros, multiple values, shared incremental heaps, guardians and weak pairs, and generic ports. Version 5 is available for Sparc SunOS and Solaris, Alpha OSF/1, SGI IRIX 5.X, Motorola mc88000 SVR3/4, 80386 NeXT Mach, BSDI BSD/386, and Linux. More information on Chez Scheme can be obtained via anomymous ftp from ftp.cs.indiana.edu:/pub/scheme/chezscheme/ Site license fees start at $9000 ($4500 academic). We are not able to handle personal sales at this time. For detailed pricing and ordering information contact sales@cadence.bloomington.in.us or Kent Dybvig at dyb@cs.indiana.edu. Cadence Research Systems, 3814 Devonshire South, Bloomington, IN 47408-9698, USA. Phone 812-333-9269, fax 812-332-4688. EdScheme runs on Macintosh, DOS and Atari ST and costs $50. It includes an incremental compiler, editor, and turtle graphics interface, 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., 2136 NE 68th Street, Suite 401, Fort Lauderdale, FL 33308, call (305) 776-7376, or fax (305) 776-6174. You can also send email to 71020.1774@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 100015.1465@compuserve.com. Ibuki PC Scheme 5.01 is a modern, up-to-date implementation of TI PC-Scheme (see [2-1]). Ibuki purchased the rights to TI PC Scheme on July 13, 1992. Ibuki PC Scheme runs under DOS on all IBM compatible PCs, including 486s, and can use up to 4mb of extended memory. It will also run under Windows 3.1. For more information, contact IBUKI, 340 Second Street, PO Box 1627, Los Altos, CA 94022, phone (415) 961-4996, fax (415) 961-8016, email Richar Weyhrauch . Ibuki has a special pricing program for schools teaching Scheme in courses. 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, or fax bug reports to 415-694-7705 or 800-441-5015. MacScheme is distributed by Academic Computing Specialists (ACS), 2015 East 3300 South, Salt Lake City, UT 84109-2630, 1-800-531-3227 or 1-800-552-1601 (801-484-3923), fax 801-467-2200. These products may also be purchased from Academic Computing Specialists, PO Box 711, Dewey, AZ 86327, tel 602-632-7176, fax 602-632-7631. ---------------------------------------------------------------- Subject: [2-3] 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 available in digest fromat as part of the Scheme Digest scheme@mc.lcs.mit.edu. comp.lang.scheme.c Discussion of C-Scheme, a scheme dialect more commonly known as "MIT Scheme". This newsgroup is gatewayed to the info-cscheme@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 info-dylan@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 majordomo@cambridge.apple.com with "subscribe " in the message body. Likewise use "unsubscribe " to cancel your subscription and "help" to get help.] General Scheme Mailing Lists: scheme@mc.lcs.mit.edu Discussion of Scheme. Gatewayed to the comp.lang.scheme newsgroup. scheme@ai.mit.edu General discussion about Scheme. Particular Flavors of Scheme: info-cscheme@altdorf.ai.mit.edu, info-cscheme@zurich.ai.mit.edu C-Scheme. Gatewayed to the comp.lang.scheme.c newsgroup. t-project@cs.yale.edu T, a dialect of Scheme. info-clscheme@mc.lcs.mit.edu PseudoScheme info-dylan@cambridge.apple.com Dylan (not really scheme, but) ---------------------------------------------------------------- ;;; *EOF*