home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk1.iso / answers / scheme-faq / part1 next >
Internet Message Format  |  1994-09-13  |  54KB

  1. Path: bloom-beacon.mit.edu!grapevine.lcs.mit.edu!uhog.mit.edu!news.kei.com!MathWorks.Com!news2.near.net!das-news.harvard.edu!cantaloupe.srv.cs.cmu.edu!mkant
  2. From: mkant+@cs.cmu.edu (Mark Kantrowitz)
  3. Newsgroups: comp.lang.scheme,comp.lang.lisp,news.answers,comp.answers
  4. Subject: FAQ: Scheme Frequently Asked Questions 1/2 [Monthly posting]
  5. Supersedes: <SCHEME_1_776761236@CS.CMU.EDU>
  6. Followup-To: poster
  7. Date: 13 Sep 1994 15:32:59 GMT
  8. Organization: Carnegie-Mellon University, School of Computer Science
  9. Lines: 1079
  10. Approved: news-answers-request@MIT.Edu
  11. Distribution: world
  12. Expires: 25 Oct 1994 15:31:54 GMT
  13. Message-ID: <SCHEME_1_779470314@CS.CMU.EDU>
  14. Reply-To: ai+lisp-faq@cs.cmu.edu
  15. NNTP-Posting-Host: glinda.oz.cs.cmu.edu
  16. Xref: bloom-beacon.mit.edu comp.lang.scheme:4569 comp.lang.lisp:6494 news.answers:25638 comp.answers:7247
  17.  
  18. Archive-name: scheme-faq/part1
  19. Last-Modified: Tue Aug 23 14:52:02 1994 by Mark Kantrowitz
  20. Version: 1.17
  21. Maintainer: Mark Kantrowitz and Barry Margolin <ai+lisp-faq@cs.cmu.edu>
  22. URL: http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/scheme/top.html
  23.  
  24. ;;; ****************************************************************
  25. ;;; Answers to Frequently Asked Questions about Scheme *************
  26. ;;; ****************************************************************
  27. ;;; Written by Mark Kantrowitz and Barry Margolin
  28. ;;; scheme_1.faq -- 52218 bytes
  29.  
  30. This post contains part 1 of the Scheme FAQ.
  31.  
  32. If you think of questions that are appropriate for this FAQ, or would
  33. like to improve an answer, please send email to us at ai+lisp-faq@cs.cmu.edu.
  34.  
  35. Note that the lisp-faq mailing list is for discussion of the content
  36. of the FAQ posting only.  It is not the place to ask questions about Scheme;
  37. use either the scheme@ai.mit.edu mailing list, the comp.lang.scheme
  38. newsgroup or the Scheme Digest (scheme@mc.lcs.mit.edu) for that. If a
  39. question appears frequently in one of those forums, it will get added
  40. to the FAQ list. 
  41.  
  42. *** Copyright:
  43.  
  44. Copyright (c) 1993-94 by Mark Kantrowitz and Barry Margolin. 
  45. All rights reserved. 
  46.  
  47. This FAQ may be freely redistributed in its entirety without
  48. modification provided that this copyright notice is not removed.  It
  49. may not be sold for profit or incorporated in commercial documents
  50. (e.g., published for sale on CD-ROM, floppy disks, books, magazines,
  51. or other print form) without the prior written permission of the
  52. copyright holder.  Permission is expressly granted for this document
  53. to be made available for file transfer from installations offering
  54. unrestricted anonymous file transfer on the Internet.
  55.  
  56. This article is provided AS IS without any express or implied warranty.
  57.  
  58. *** Topics Covered:
  59.  
  60. Topics Covered (Part 1):
  61.   [1-0]   What is the purpose of this newsgroup?
  62.   [1-2]   What is the difference between Scheme and Common Lisp?
  63.   [1-3]   Scheme books, introductions, documentation, periodicals,
  64.           journals, and conference proceedings. 
  65.   [1-4]   Where can I learn about implementing Scheme interpreters and 
  66.           compilers?
  67.   [1-7]   Standards for Scheme -- What are R4RS and IEEE P1178?
  68.   [1-8]   How do I do object-oriented programming in Scheme?
  69.   [1-9]   Repositories of Scheme Software
  70.   [1-10]  Publicly Redistributable Scheme Software
  71.   [1-11]  Formatting code in LaTeX (WEB and other literate programming tools)
  72.   [1-12]  Where can I get an implementation of Prolog in Scheme?
  73.   [1-13]  What does SICP, SCOOPS, R4RS, CAR, CDR, ... mean?
  74.   [1-14]  Why is there no EVAL in Scheme?
  75.   [1-15]  World-Wide Web (WWW) Resources
  76.   [1-16]  Why is Scheme called 'Scheme'?
  77.  
  78. Topics Covered (Part 2):
  79.   [2-1]   Free Scheme implementations.
  80.   [2-2]   Commercial Scheme implementations.
  81.   [2-3]   What Scheme-related discussion groups and mailing lists exist?
  82.  
  83. Search for \[#\] to get to question number # quickly.
  84.  
  85. *** Recent Changes:
  86.  
  87. ;;; 1.13:
  88. ;;; 15-APR-94 mk    Replaced cs.indiana.edu with ftp.cs.indiana.edu 
  89. ;;; 12-MAY-94 mk    Added entry on libscheme to [2-1].
  90. ;;; 12-MAY-94 mk    SIOD v3.0 now available.
  91. ;;; 12-MAY-94 mk    Added entry on Andrew Wright's Soft Scheme type system.
  92. ;;;
  93. ;;; 1.14:
  94. ;;; 27-MAY-94 mk    Added ChezSybase to [1-10].
  95. ;;; 12-JUN-94 mk    New version of STk.
  96. ;;;
  97. ;;; 1.15:
  98. ;;; 15-JUN-94 mk    Moved STk to the free Scheme implementations list.
  99. ;;; 15-JUN-94 mk    Alphabetized the free scheme implementations.
  100. ;;; 15-JUN-94 mk    Alphabetized the commercial Scheme implementations.
  101. ;;;  7-JUL-94 mk    Changed "http://martigny..." to "http://www-swiss..." in
  102. ;;;                 [1-15], per Jonathan Rees.
  103. ;;;  8-JUL-94 mk    Updated PC-Scheme entry; added Ibuki PC-Scheme entry.
  104. ;;;  8-JUL-94 mk    Added HTML version of R4RS.
  105. ;;;
  106. ;;; 1.16:
  107. ;;; 22-JUL-94 mk    Added note about the Scheme section of the CMU AI
  108. ;;;                 Repository to [1-9], including information on the CD-ROM.
  109. ;;;
  110. ;;; 1.17:
  111. ;;; 23-AUG-94 mk    Moved the lisp-faq mailing list (for maintenance of the
  112. ;;;                 FAQ) from think.com to ai+lisp-faq@cs.cmu.edu.
  113. ;;;                 FAQ no longer available from ftp.think.com.
  114. ;;; 23-AUG-94 mk    New ftp location for Prolog in Scheme [1-12].
  115. ;;; 26-AUG-94 mk    Added Bryan's Object System to [1-8].
  116. ;;;  1-SEP-94 mk    New entry for Chez Scheme in [2-2].
  117.  
  118.  
  119. *** Introduction:
  120.  
  121. Certain questions and topics come up frequently in the various network
  122. discussion groups devoted to and related to Scheme.  This file/article is
  123. an attempt to gather these questions and their answers into a convenient
  124. reference for Scheme programmers.  It (or a reference to it) is posted
  125. periodically.  The hope is that this will cut down on the user time and
  126. network bandwidth used to post, read and respond to the same questions
  127. over and over, as well as providing education by answering questions
  128. some readers may not even have thought to ask.
  129.  
  130. This is not a Scheme tutorial, nor is it an exhaustive list of all Scheme
  131. intricacies.  Scheme is a very powerful and expressive language, but with
  132. that power comes many complexities.  This list attempts to address the
  133. ones that average Scheme programmers are likely to encounter.  If you are
  134. new to Scheme, see the answer to the question "How can I learn
  135. Scheme?" [1-3].
  136.  
  137. The latest version of this file is available via anonymous FTP from CMU: 
  138.  
  139.    To obtain the files from CMU, connect by anonymous FTP to 
  140.       ftp.cs.cmu.edu:/user/ai/pubs/faqs/scheme/  [128.2.206.173]
  141.    using username "anonymous" and password "name@host" (substitute your
  142.    email address) or via AFS in the Andrew File System directory
  143.       /afs/cs.cmu.edu/project/ai-repository/ai/pubs/faqs/scheme/
  144.    and get the files scheme_1.faq and scheme_2.faq.
  145.  
  146. You can also obtain a copy of the FAQ by sending a message to
  147. ai+query@cs.cmu.edu with 
  148.    Send Scheme FAQ
  149. in the message body.
  150.  
  151. An automatically generated HTML version of the Scheme FAQ is accessible by
  152. WWW as part of the AI-related FAQs Mosaic page. The URL for this
  153. resource is
  154.    http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/top.html
  155. The direct URL for the Lisp FAQ is
  156.    http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/scheme/top.html
  157.  
  158. We've tried to minimize the overlap with the FAQ postings to the
  159. comp.lang.lisp, comp.lang.clos and comp.ai newsgroups, so if you don't
  160. find what you're looking for here, we suggest you try the FAQs for
  161. those newsgroups. These FAQs should be available by anonymous ftp from
  162.    rtfm.mit.edu:/pub/usenet/news.answers/ [18.181.0.24]
  163. in the lisp-faq/, ai-faq/ and scheme-faq/ subdirectories or by email.
  164. For instructions on email retrieval, send a mail message to
  165. mail-server@rtfm.mit.edu with "help" and "index" on separate lines in
  166. the body of the message.
  167.  
  168. If you need to cite the FAQ for some reason, use the following format:
  169.    Mark Kantrowitz and Barry Margolin, "Answers to Frequently Asked
  170.    Questions about Scheme", comp.lang.scheme, <month>, <year>,
  171.    ftp.cs.cmu.edu:/user/ai/pubs/faqs/scheme/scheme_?.faq, 
  172.    ai+lisp-faq@cs.cmu.edu.
  173.  
  174. ----------------------------------------------------------------
  175. Subject: [1-0] What is the purpose of this newsgroup?
  176.  
  177. The newsgroup comp.lang.scheme exists for general discussion of
  178. topics related to the programming language Scheme. For example, possible
  179. topics can include (but are not necessarily limited to):
  180.    announcements of Scheme books and products
  181.    discussion of programs and utilities written in Scheme
  182.    discussion of portability issues
  183.    questions about possible bugs in Scheme implementations
  184.    problems porting an implementation to some architecture
  185. Postings should be of general interest to the Scheme community. See also
  186. question [2-3].
  187.  
  188. Questions about Common Lisp should be directed to the newsgroup
  189. comp.lang.lisp.  Discussion of object oriented programming in Lisp to
  190. the newsgroup comp.lang.clos. Discussion of functional programming
  191. language issues in general should be directed to the newsgroup
  192. comp.lang.functional.  Discussion of AI programs implemented in Scheme
  193. should sometimes be cross-posted to the newsgroup comp.ai.
  194.  
  195. ----------------------------------------------------------------
  196. Subject: [1-2] What is the difference between Scheme and Common Lisp?
  197.  
  198. Scheme is a dialect of Lisp that stresses conceptual elegance and
  199. simplicity. It is specified in R4RS and IEEE standard P1178. (See
  200. question [1-7] for details on standards for Scheme.) Scheme is much
  201. smaller than Common Lisp; the specification is about 50 pages,
  202. compared to Common Lisp's 1300 page draft standard. (See the Lisp FAQ
  203. for details on standards for Common Lisp.) Advocates of Scheme often
  204. find it amusing that the entire Scheme standard is shorter than the
  205. index to Guy Steele's "Common Lisp: the Language, 2nd Edition".
  206.  
  207. Scheme is often used in computer science curricula and programming
  208. language research, due to its ability to represent many programming
  209. abstractions with its simple primitives. Common Lisp is often used for
  210. real world programming because of its large library of utility
  211. functions, a standard object-oriented programming facility (CLOS), and
  212. a sophisticated condition handling system.
  213.  
  214. See question [1-8] for information about object-oriented programming
  215. in Scheme. 
  216.  
  217. In Common Lisp, a simple program would look something like the
  218. following:
  219.  
  220.    (defun fact (n)
  221.      (if (< n 2)
  222.          1
  223.          (* n (fact (1- n)))))
  224.  
  225. In Scheme, the equivalent program would like like this:
  226.  
  227.    (define fact
  228.      (lambda (n)
  229.        (if (< n 2)
  230.            1
  231.          (* n (fact (- n 1))))))
  232.  
  233. Experienced Lisp programmers might write this program as follows in order
  234. to allow it to run in constant space:
  235.  
  236.    (defun fact (n)
  237.      (labels ((tail-recursive-fact (counter accumulator)
  238.                 (if (> counter n)
  239.                     accumulator
  240.                     (tail-recursive-fact (1+ counter)
  241.                                          (* counter accumulator)))))
  242.        (tail-recursive-fact 1 1)))
  243.  
  244. Whereas in Scheme the same computation could be written as follows:
  245.  
  246.    (define fact
  247.      (lambda (n)
  248.        (letrec ((tail-recursive-fact
  249.                  (lambda (counter accumulator)
  250.                    (if (> counter n)
  251.                        accumulator
  252.                      (tail-recursive-fact (+ counter 1)
  253.                                           (* counter accumulator))))))
  254.                (tail-recursive-fact 1 1))))
  255.  
  256. or perhaps (using IEEE named LETs):
  257.  
  258.    (define fact
  259.      (lambda (n)
  260.        (let loop ((counter n)
  261.                   (accumulator 1))
  262.             (if (< counter 2)
  263.                 accumulator
  264.               (loop (- counter 1)
  265.                     (* accumulator counter))))))
  266.  
  267. Some Schemes allow one to use the syntax (define (fact n) ...) instead
  268. of (define fact (lambda (n) ...)).
  269.  
  270. ----------------------------------------------------------------
  271. Subject: [1-3] Scheme books, introductions, documentation, periodicals, 
  272.                journals, and conference proceedings.
  273.  
  274. Introductions to Scheme:
  275.  
  276.    The following four books from MIT Press are listed in order of
  277.    increasing difficulty. The first is good for the complete novice,
  278.    the second for students with little or no previous exposure to programming,
  279.    and the third and fourth for more advanced students. The third and
  280.    fourth may also be used to learn a variety of powerful programming
  281.    language concepts. One of these books will suit your needs.
  282.  
  283.    1. Daniel P. Friedman and M. Felleisen.
  284.       "The Little LISPer"
  285.       MIT Press (Cambridge, MA), 3rd printing, 1989. ISBN 0-262-56038-0.
  286.       Science Research Associates (Chicago), 3rd ed, 1989. 206 pages.
  287.  
  288.       Good for a quick introduction. Uses Scheme instead of Common Lisp.
  289.       (The book uses a dialect of Scheme with footnotes about translating to
  290.       Scheme or Common Lisp. The footnotes won't allow a non-expert to use
  291.       Common Lisp for the advanced chapters because of the complexity.)
  292.  
  293.    2. Brian Harvey and Matthew Wright
  294.       "Simply Scheme: Introducing Computer Science"
  295.       MIT Press, Cambridge, MA, 1994. 583 pages. 
  296.       ISBN 0-262-08226-8. $49.95.
  297.  
  298.       This book is ideal for students with little or no previous exposure to
  299.       programming. The book is designed to be used before SICP (the authors
  300.       call it a SICP "prequel"), and makes Scheme fun by sheltering the
  301.       students from potentially confusing technical details. Unlike Pascal
  302.       or C, the emphasis is on ideas, not obscure matters of syntax and
  303.       arbitrary rules of style.  High schools who have shied away from using
  304.       Scheme because they found SICP to be too challenging should consider
  305.       using this book instead.
  306.  
  307.       The text gradually and gently introduces students to some of the key
  308.       concepts of programming in Scheme. It starts off with functions and
  309.       function composition and continues with the notion of functions as
  310.       data (first-class functions) and programs that write programs
  311.       (higher-order functions).  Since the complexity of the language is
  312.       hidden, students can get involved in some of the more interesting and
  313.       fun aspects of the language earlier than in other texts.  Then the
  314.       book progresses through the more complicated concepts of lambda,
  315.       recursion, data abstraction and procedural abstraction, and concludes
  316.       with sequential techniques, but with careful attention to topics
  317.       students often find difficult.  There are five chapters on recursion
  318.       alone! There's also a pitfalls section at the end of most chapters to
  319.       help students recognize and avoid common errors.
  320.  
  321.       The book uses several programs as examples, including a tic-tac-toe
  322.       program, a pattern matcher, a miniature spreadsheet, and a simple
  323.       database program.  Source code for the programs is available by
  324.       anonymous ftp from anarres.cs.berkeley.edu:/pub/scheme/, or for $10 on
  325.       IBM or Macintosh diskettes from the publisher.
  326.  
  327.    3. Harold Abelson and Gerald Jay Sussman, with Julie Sussman.
  328.       "Structure and Interpretation of Computer Programs"
  329.       MIT Press (Cambridge, MA) and McGraw-Hill (New York), 1985.
  330.       542 pages. ISBN 0-262-01077-1, $55. The teacher's manual, which is
  331.       also available from MIT Press (ISBN 0-262-51046-4 $20), does NOT
  332.       contain solutions to the exercises, but does contain hints on
  333.       teaching with the book. 
  334.  
  335.       Starts off introductory, but rapidly gets into powerful
  336.       Lisp-particular constructs, such as using closures and engines,
  337.       building interpreters, compilers and object-oriented systems.  Often
  338.       referred to by its acronym, SICP, which is pronounced "Sick-Pee". This
  339.       is the classical text for teaching program design using Scheme,
  340.       and everybody should read it at least once. MIT problem sets are
  341.       available from the repositories, and materials from Gustavus
  342.       Adolphus College are available from ftp.gac.edu:/pub/SICP/. 
  343.  
  344.    4. George Springer and Daniel P. Friedman
  345.       "Scheme and the Art of Programming" 
  346.       MIT Press and McGraw Hill, 1990, 596 pages.
  347.       ISBN 0-262-19288-8, $50.
  348.  
  349.       Introduces basic concepts of programming in Scheme. Also deals with
  350.       object oriented programming, co-routining, continuations.  Gives
  351.       numerous examples. Has more of an emphasis on teaching Scheme than
  352.       SICP, and can be seen as an alternative to SICP.  Source code from the
  353.       chapters is available from 
  354.           ftp.cs.indiana.edu:/pub/scheme-repository/lit/sap/
  355.  
  356. Older Introductions to Scheme:
  357.  
  358.    1. Smith, Jerry D.
  359.       "Introduction to Scheme"
  360.        Prentice Hall (Englewood Cliffs, NJ), 1988, 324 pages.
  361.            Focuses on PC Scheme.
  362.  
  363.    2. Michael Eisenberg 
  364.       "Programming in Scheme"
  365.       Scientific Press (Redwood City, CA), 1988. 304 pages.
  366.  
  367.    3. Two articles in BYTE Magazine, February 1988, by Abelson and
  368.       Sussman, and Clinger.
  369.  
  370. Online Introductions to Scheme:
  371.  
  372.    1. The Ken Dickey article, "The Scheme Programming Language", in
  373.       COMPUTER LANGUAGES magazine, June 1992, is available from the
  374.       Scheme Repository at 
  375.           ftp.cs.indiana.edu:/pub/scheme-repository/txt/intro.txt
  376.       The Revised^4 Report on the Algorithmic Language Scheme is also 
  377.       available from the Scheme Repository.
  378.  
  379.    2. The Info files from the MIT Scheme implementation.
  380.  
  381.    3. "Introductory Scheme" by Joseph W. Lavinus and James D. Arthur,
  382.        <lavinus@virginia.edu>. Available from the Lisp Utilities
  383.        Repository as ftp.cs.cmu.edu:/user/ai/lang/scheme/doc/intro/ 
  384.        as schemedoc.tar.gz.
  385.  
  386. Scheme and Artificial Intelligence:
  387.  
  388.    1. Wolfgang Kreutzer and Bruce McKenzie
  389.       "Programming for Artificial Intelligence: 
  390.        Methods, Tools and Applications"
  391.       Addison-Wesley (Reading, MA), 1990. 682 pages. 
  392.       ISBN 0-201-41621-2.
  393.            Discusses Scheme, Prolog, and Smalltalk, gives an overview of
  394.            the history and philosophy of AI, surveys three major
  395.            programming paradigms (procedural, declarative, and
  396.            object-oriented), and metaphors to AI programming.
  397.            Source code from the chapters is available from 
  398.               ftp.cs.indiana.edu:/pub/scheme-repository/lit/
  399.            as aibook.tar.Z. Some of the programs will only run under MacScheme.
  400.  
  401. General Scheme reference books include:
  402.  
  403.    1. K. Dybvig
  404.       "The Scheme programming language"
  405.       Prentice Hall, 1987.
  406.          Good reference for Scheme.
  407.  
  408. Scheme-related periodicals include:
  409.         
  410.    1. LISP Pointers.
  411.       Published by ACM SIGPLAN six times a year. Volume 1, Number 1
  412.       was April-May 1987. 
  413.       Subscriptions: ACM Members $12; ACM Student Members $7; Non-ACM
  414.       members $25. Mail checks payable to the ACM to ACM Inc., PO Box
  415.       12115, Church Street Station, New York, NY 10249.
  416.  
  417.    2. LISP and Symbolic Computation, Kluwer Academic Press. Volume 1
  418.       was published in 1989. (jlz@lucid.com is the editor).  ISSN 0892-4635.
  419.       Subscriptions: Institutions $169; Individuals $80. Add $8 for
  420.       air mail. Kluwer Academic Publishers, PO Box 322, 3300 AH Dordrecht, 
  421.       The Netherlands, or Kluwer Academic Publishers, PO Box 358, Accord
  422.       Station, Hingham, MA 02018-0358. 
  423.  
  424.    3. Proceedings of the biannual ACM Lisp and Functional Programming
  425.       Conference. (First one was in 1980.)
  426.  
  427.    4. Proceedings of the annual Lisp Users and Vendors Conference.
  428.  
  429. See also the Scheme Bibliography from the Scheme Repository
  430. (ftp.cs.indiana.edu:/pub/scheme-repository/) for additional readings.
  431. A large number of technical reports on Scheme are now available in the
  432. text section (ftp.cs.indiana.edu:/pub/scheme-repository/txt/).
  433.  
  434. ----------------------------------------------------------------
  435. Subject: [1-4] Where can I learn about implementing Scheme interpreters  
  436.                and compilers?
  437.  
  438. There is no single book that is really comprehensive, so you will have
  439. to combine reading the sources to the various free implementations
  440. (e.g., Gambit [Feeley] and S48 [Rees]) with bits and pieces of tech
  441. reports and various books.
  442.  
  443. Books about Scheme implementation include:
  444.  
  445.    1. John Allen
  446.       "Anatomy of Lisp"
  447.       McGraw-Hill, 1978. 446 pages. ISBN 0-07-001115-X
  448.  
  449.    2. Samuel Kamin
  450.       "Programming Languages, An Interpreter-Based Approach"
  451.       Addison-Wesley, Reading, Mass., 1990. ISBN 0-201-06824-9
  452.            Includes sources to several interpreters for Lisp-like
  453.            languages, and a pointer to sources via anonymous ftp.
  454.  
  455.    3. Sharam Hekmatpour
  456.       "Lisp: A Portable Implementation"
  457.       Prentice Hall, 1985. ISBN 0-13-537490-X.
  458.            Describes a portable implementation of a small dynamic
  459.            Lisp interpreter (including C source code). 
  460.  
  461.    4. Peter Henderson
  462.       "Functional Programming: Application and Implementation"
  463.       Prentice-Hall (Englewood Cliffs, NJ), 1980. 355 pages.
  464.  
  465.    5. Peter M. Kogge
  466.       "The Architecture of Symbolic Computers"
  467.       McGraw-Hill, 1991. ISBN 0-07-035596-7.
  468.            Includes sections on memory management, the SECD and
  469.            Warren Abstract Machines, and overviews of the various
  470.            Lisp Machine architectures.
  471.    
  472.    6. Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes
  473.       "Essentials of Programming Languages"
  474.       MIT Press, 1992, 536 pages. ISBN 0-262-06145-7, $55.
  475.            Teaches fundamental concepts of programming language
  476.            design by using small interpreters as examples. Covers
  477.            most of the features of Scheme. Includes a discussion
  478.            of parameter passing techniques, object oriented languages,
  479.            and techniques for transforming interpreters to allow
  480.            their implementation in terms of any low-level language.
  481.            Also discusses scanners, parsers, and the derivation of
  482.            a compiler and virtual machine from an interpreter.
  483.            Source files available by anonymous ftp from 
  484.               ftp.cs.indiana.edu:/pub/eopl/ (129.79.254.191) or from the
  485.            Scheme Repository.
  486.  
  487.    7. Peter Lee, editor, "Topics in Advanced Language Implementation",
  488.       The MIT Press, Cambridge, Mass., 1991.
  489.            Articles relevant to the implementation of functional
  490.            programming languages.
  491.  
  492.    8. Also see the proceedings of the biannual ACM Lisp and Functional
  493.       Programming conferences, the implementation notes for CMU Common Lisp,
  494.       Peter Norvig's book ("Paradigms of AI Programming: Case Studies
  495.       in Common Lisp", Morgan Kaufmann, 1992. 946 pages. ISBN
  496.       1-55860-191-0), and SICP (Abelson & Sussman). 
  497.  
  498. Technical reports and journal articles about Scheme implementation include:
  499.  
  500.    Mitchell Wand and Daniel P. Friedman, "Compiling Lambda Expressions
  501.    Using Continuations and Factorizations", Journal of Computer Languages
  502.    3(1978), 241-263.
  503.  
  504.    Guy Lewis Steele Jr., "Rabbit: A Compiler for Scheme", MIT AI Memo
  505.    474, Massachusetts Institute of Technology, Cambridge, MA, May 1978.
  506.  
  507.    Guy Lewis Steele Jr., "Compiler Optimization Based on Viewing LAMBDA
  508.    as RENAME + GOTO", in "Artificial Intelligence: An MIT Perspective",
  509.    Patrick Henry Winston and Richard Henry Brown (eds.), MIT Press,
  510.    Cambridge, MA, 1980.
  511.  
  512.    Jonathan A. Rees and Norman I. Adams, "T: A Dialect of Lisp or,
  513.    LAMBDA: The Ultimate Software Tool", Conference Record of the 1982 ACM
  514.    Symposium on Lisp and Functional Programming, 1982, 114-122.
  515.  
  516.    R. Kent Dybvig, "C-Scheme", Computer Science Department Technical
  517.    Report #149 (MS Thesis), Indiana University, Bloomington, IA, 1983.
  518.  
  519.    William Clinger, "The Scheme 311 compiler: An Exercise in Denotational
  520.    Semantics", Conference Record of the 1984 ACM Symposium on Lisp and
  521.    Functional Programming, 1984, 356-364.
  522.  
  523.    Guillermo J. Rozas, "Liar, an Algol-like Compiler for Scheme", S.B.
  524.    Thesis, Department of Electrical Engineering and Computer Science,
  525.    Massachusetts Institute of Technology, January 1984.
  526.  
  527.    David H. Bartley and John C. Jensen, "The Implementation of PC
  528.    Scheme", Proceedings of the 1986 ACM Conference on Lisp and Functional
  529.    Programming, 1986, 86-93.
  530.  
  531.    David Kranz, Richard Kelsey, Jonathan A. Rees, Paul Hudak, James
  532.    Philbin and Norman I. Adams, "Orbit: An Optimizing Compiler for
  533.    Scheme", Proceedings of the SIGPLAN Notices '86 Symposium on Compiler
  534.    Construction, June 1986, 219-233.  Published as SIGPLAN Notices 21(7),
  535.    July 1986.
  536.  
  537.    Marc Feeley, "Deux Approches a' L'implantation du Language Scheme",
  538.    M.Sc. Thesis, De'partement d'Informatique et de Recherche
  539.    Ope'rationelle, University of Montreal, May 1986.
  540.  
  541.    R. Kent Dybvig, "Three Implementation Models for Scheme", Department
  542.    of Computer Science Technical Report #87-011 (Ph.D. Dissertation),
  543.    University of North Carolina at Chapel Hill, Chapel Hill, North
  544.    Carolina, April 1987.
  545.  
  546.    William D. Clinger, Anne H. Hartheimer and Eric M. Ost,
  547.    "Implementation Strategies for Continuations", Conference Record of
  548.    the 1988 ACM Conference on Lisp and Functional Programming, August
  549.    1988, 124-131.
  550.  
  551.    David Kranz, "Orbit: An Optimizing Compiler for Scheme", Computer
  552.    Science Technical report #632 (Ph.D. Dissertation), Yale University,
  553.    1988.
  554.  
  555.    Joel F. Bartlett, "SCHEME->C a Portable Scheme-to-C Compiler",
  556.    Research Report 89/1, Dec. Western Research Laboratory, Palo Alto, CA,
  557.    January 1989.
  558.  
  559.    Marc Feeley and James S. Miller, "A Parallel Virtual Machine for
  560.    Efficient Scheme Compilation", Proceedings of the 1990 ACM Conference
  561.    on Lisp and Functional Programming, Nice, France, June 1990.
  562.  
  563.    Chris Hanson, "Efficient Stack Allocation for Tail-Recursive
  564.    Languages", Proceedings of the 1990 ACM Conference on Lisp and
  565.    Functional Programming, Nice, France, June 1990.
  566.  
  567.    Robert Hieb, R. Kent Dybvig and Carl Bruggeman, "Representing Control
  568.    in the Presence of First-Class Continuations", Proceedings of the
  569.    SIGPLAN Notices '90 Conference on Programming Language Design and
  570.    Implementation, White Plains, New York, June 1990, 66-77.
  571.  
  572.    Guillermo Rozas, "Taming the Y Operator", Proceedings of the 1992 ACM
  573.    Conference on Lisp and Functional Programming, San Francisco, CA,
  574.    June 1992, 226-234.
  575.  
  576.    Dan Teodosiu, "HARE: An Optimizing Portable Compiler for Scheme", ACM
  577.    Sigplan Notices 26(1), January 1991.
  578.  
  579. ----------------------------------------------------------------
  580. Subject: [1-7] Standards for Scheme -- What are R4RS and IEEE P1178?
  581.  
  582. R4RS is the Revised^4 Report on the Algorithmic Language Scheme,
  583. edited by W. Clinger and J. Rees. It appeared in ACM Lisp Pointers IV,
  584. July-September 1991, and also as MIT AI Memo 848b. It serves as a kind
  585. of standard for the language. It can be obtained by anonymous ftp at
  586. the two Scheme Repositories, altdorf.ai.mit.edu and ftp.cs.indiana.edu.
  587. A HTML version is available as
  588.    ftp://altdorf.ai.mit.edu/archive/scm/HTML/r4rs_toc.html
  589.  
  590. IEEE P1178 is IEEE Standard 1178-1990, "IEEE Standard for the Scheme
  591. Programming Language", published by IEEE in 1991. ISBN 1-55937-125-0.
  592. It is now also an ANSI standard. It may be ordered from IEEE by
  593. calling 1-800-678-IEEE or 908-981-1393 or writing IEEE Service
  594. Center, 445 Hoes Lane, P.O. Box 1331, Piscataway, NJ 08855-1331, 
  595. and using order number SH14209 ($28 for IEEE members, $40 others).
  596.  
  597. ----------------------------------------------------------------
  598. Subject: [1-8] How do I do object-oriented programming in Scheme?
  599.  
  600. Some Scheme implementations (for example, MacScheme, Feel, Oaklisp, XScheme,
  601. and PC-Scheme) include built-in object-oriented extensions.  
  602.  
  603. BOS (Bryan's Object System) is a very small object system for Scheme.
  604. It is based around generic functions and multiple inheritance.  BOS
  605. provides more or less the same features as Meroon and the Tiny CLOS
  606. base language. Even though it has not been optimised, it should be
  607. quite a bit faster than those because it does not include a MOP.
  608. BOS has been tested under Scheme 48 and SCM, and should run under any
  609. fairly modern Scheme implementation (especially any which runs SLIB)
  610. with little or no change.  It is available by anonymous ftp from
  611.    ftp.maths.tcd.ie:/pub/bosullvn/misc/bos.tar.gz
  612. and the CMU AI Repository in
  613.    ftp.cs.cmu.edu:/user/ai/lang/scheme/oop/bos/
  614. For more information, write to Bryan O'Sullivan <bosullvn@maths.tcd.ie>.
  615.  
  616. MEROON is a package written in Scheme to provide the basic facilities
  617. of an object-oriented programming style through three macros:
  618. define-class, define-generic, and define-method. MEROON offers simple
  619. inheritance, reflective metaclasses and simple dispatching generic
  620. functions with support for multimethods. MEROON also offers indexed
  621. fields subsuming Scheme vectors without inheritance restrictions.
  622. Meroon runs in Scheme->C, PC-Scheme, Chez Scheme, Elk, Bigloo, SCM
  623. with SLIB, and MacGambit. MEROON sources and documentation may be
  624. found in the Scheme Repository as
  625.    ftp.cs.indiana.edu:/pub/scheme-repository/new/meroon.*.tar.Z
  626. and also from
  627.    ftp.inria.fr:/pub/INRIA/icsla/Programs/MeroonV3*.tar.gz [128.93.1.26]
  628. The file meroonet*.tar.gz is a toy version of meroon. For more
  629. information, contact Christian Queinnec <queinnec@polytechnnique.fr>
  630. or <Christian.Queinnec@inria.fr>.
  631.  
  632. SCOOPS (Scheme Object Oriented Programming System) is an object system
  633. for Scheme written by Amitabh Srivastava/Texas Instruments with 
  634. re-writes by Steve Sherin <sherin@linc.cis.upenn.edu>. [Email to this
  635. address bounced 7/7/93.] This package needs first-class environments.
  636. It is available from the Scheme Repository as
  637. /pub/scheme-repository/scm/scoops.sha. 
  638.  
  639. Tiny CLOS is a Scheme implementation of a `kernelized' CLOS, with a
  640. metaobject protocol. The implementation is even simpler than the
  641. simple CLOS found in `The Art of the Metaobject Protocol,' weighing in
  642. at around 850 lines of code, including (some) comments and
  643. documentation. Tiny CLOS is available by anonymous ftp from
  644. parcftp.xerox.com:/pub/mops/. Tiny CLOS runs in MIT Scheme 11.74 and
  645. should run with only minor modifications in other Schemes as well. If
  646. you want to be added to the mops@parc.xerox.com mailing list
  647. (technical questions and discussion only), send mail to Gregor Kiczales
  648. <gregor@parc.xerox.com>.
  649.  
  650. YASOS (Yet Another Scheme Object System) is fairly functional in style
  651. and uses delegation.  The implementation includes multiple inheritance
  652. and "send to super" and is much smaller than class-based OO systems.
  653. See Ken Dickey, "Scheming with Objects", AI Expert 7(10):24-33,
  654. October 1992. A copy of the article and YASOS code is available from
  655. the Scheme Repository in pub/scheme-repository/txt/swob.txt. YASOS is also
  656. included as part of SLIB. For further information, contact Ken Dickey
  657. <kend@newton.apple.com>.
  658.  
  659. ----------------------------------------------------------------
  660. Subject: [1-9] Repositories of Scheme Software
  661.  
  662. There are several repositories of publicly redistributable and
  663. public domain Scheme code. 
  664.  
  665. CMU AI Repository, Scheme Section:
  666.  
  667.    The Scheme Section of the CMU Artificial Intelligence Repository
  668.    is accessible by anonymous ftp to
  669.       ftp.cs.cmu.edu:/user/ai/lang/scheme/ [128.2.206.173]
  670.    through the AFS directory
  671.       /afs/cs.cmu.edu/project/ai-repository/ai/lang/scheme/
  672.    or by WWW from the URL   
  673.       http://www.cs.cmu.edu:8001/Web/Groups/AI/html/repository.html
  674.    and includes more than 200 megabytes of sources and other materials
  675.    of interest to Scheme programmers, including all freely
  676.    distributable implementations and many programs.  Unlike the Scheme
  677.    Repository at Indiana University, the entire contents of the CMU AI
  678.    Repository has been keyword indexed to provide convenient browsing
  679.    of the contents.
  680.  
  681.    The repository has standardized on using 'tar' for producing
  682.    archives of files and 'gzip' for compression.
  683.  
  684.    To search the keyword index by mail, send a message to:
  685.       ai+query@cs.cmu.edu
  686.    with one or more lines containing calls to the keys command, such as:
  687.       keys scheme awk
  688.    in the message body.  Keywords may be regular expressions and are
  689.    compared with the index in a case-insensitive conjunctive fashion.  
  690.    You'll get a response by return mail. Do not include anything else in 
  691.    the Subject line of the message or in the message body.  For help on
  692.    the query mail server, include: 
  693.       help
  694.    instead. 
  695.  
  696.    A Mosaic interface to the keyword searching program is in the
  697.    works.  We also plan to make the source code (including indexes) to
  698.    this program available, as soon as it is stable.
  699.  
  700.    Most of the Scheme Section of the AI Repository appears on Prime Time 
  701.    Freeware for AI, Issue 1-1, a mixed-media book/CD-ROM publication. It
  702.    includes two ISO-9660 CD-ROMs bound into a 224 page book and sells
  703.    (list) for US$60 plus applicable sales tax and shipping and handling
  704.    charges. Payable through Visa, Mastercard, postal money orders in US
  705.    funds, and checks in US funds drawn on a US bank. For more
  706.    information write to Prime Time Freeware, 370 Altair Way, Suite 150,
  707.    Sunnyvale, CA  94086  USA, call 408-433-9662, 408-433-0727 (fax),
  708.    or send email to ptf@cfcl.com.
  709.  
  710.    Contributions of software and other materials are always welcome but
  711.    must be accompanied by an unambiguous copyright statement that grants
  712.    permission for free use, copying, and distribution -- either a
  713.    declaration by the author that the materials are in the public domain,
  714.    that the materials are subject to the GNU General Public License (cite
  715.    version), or that the materials are subject to copyright, but the
  716.    copyright holder grants permission for free use, copying, and
  717.    distribution. (We will tell you if the copying permissions are too
  718.    restrictive for us to include the materials in the repository.)
  719.    Inclusion of materials in the repository does not modify their
  720.    copyright status in any way. Materials may be placed in:
  721.       ftp.cs.cmu.edu:/user/ai/new/
  722.    When you put anything in this directory, please send mail to
  723.       ai+contrib@cs.cmu.edu
  724.    giving us permission to distribute the files, and state whether
  725.    this permission is just for the AI Repository, or also includes
  726.    publication on the CD-ROM version (Prime Time Freeware for AI).
  727.    We would also appreciate if you would include a 0.doc file for your
  728.    package; see /user/ai/new/package.doc for a template. (If you don't
  729.    have the time to write your own, we can write it for you based on
  730.    the information in your package.)
  731.  
  732.    The Scheme Section of the AI Repository is maintained by Mark Kantrowitz 
  733.    <AI.Repository@cs.cmu.edu>. 
  734.  
  735. Scheme Repository at Indiana University:
  736.  
  737.    The Scheme Repository at Indiana University contains a Scheme
  738.    bibliography, copies of the R4RS report and other papers, sample
  739.    Scheme code for a variety of purposes, several utilities, and some
  740.    implementations. The Scheme code includes code for calendar
  741.    calculations, Earley parser, FORMAT for Scheme, a scheme version of
  742.    the Gabriel benchmarks, Marc Feeley's minimal object support for
  743.    Scheme, a Scheme pretty-printer, a Prolog interpreter written in
  744.    Scheme, a random number generator in Scheme, an implementation of
  745.    SCOOPS, code from Abelson and Sussman's SICP book, Aubrey Jaffer's
  746.    IEEE/R4RS compliance test, an implementation of matrices, a Scheme
  747.    implementation of the Common Lisp FORMAT function, a Scheme front end
  748.    to Adobe Illustrator PostScript, and a LALR(1) parser (ZEBU).  The
  749.    repository was established by Ozan S. Yigit and is currently
  750.    maintained by David Eby and John Zuckerman. Send administrative
  751.    requests to
  752.       scheme-repository-request@cs.indiana.edu
  753.    The repository is accessible by anonymous ftp at 
  754.       ftp.cs.indiana.edu:/pub/scheme-repository/   [129.79.254.191]
  755.    The repository is mirrored in INRIA, courtesy of Christian Queinnec
  756.    [Ecole Polytechnique and INRIA-Rocquencourt], ftp.inria.fr:/lang/Scheme/
  757.    and also faui80.informatik.uni-erlangen.de:/pub/scheme/yorku
  758.  
  759. Other Scheme Collections:
  760.  
  761.    Scheme Implementations may also be found at altdorf.ai.mit.edu:/archive/ 
  762.    The R4RS report is available in altdorf.ai.mit.edu:/archive/scheme-reports/
  763.    or as MIT AI Memo 848b (email publications@ai.mit.edu for more information).
  764.    The altdorf archive includes SCOOPS, CL2Scheme, extend-syntax,
  765.    btree, Gabriel benchmarks, FORMAT for Scheme, etc.
  766.  
  767.    The GI (German Computer Science Society) Scheme Archive contains a
  768.    variety of scheme programs, utilities, code from theses, and other
  769.    materials. It also mirrors the Scheme Repository.  It is
  770.    accessible by anonymous ftp to faui80.informatik.uni-erlangen.de
  771.    (login as 'ftp', giving your email address as the password).
  772.       pub/scheme/gi                # GI Scheme Archive
  773.       pub/scheme/yorku             # Internet Scheme Repository
  774.    Direct questions to scheme@faui80.informatik.uni-erlangen.de.
  775.    The GI Scheme Archive is supported by the German Computer Society Special
  776.    Interest Group on AI programming and sponsored by the Bavarian AI Center
  777.    FORWISS -- Research Institute for Knowledge Based Systems.
  778.  
  779. ----------------------------------------------------------------
  780. Subject: [1-10] Publicly Redistributable Scheme Software
  781.  
  782.    SLIB (Standard Scheme Library) is a portable scheme library that
  783.    provides compatibility and utility functions for many of the
  784.    standard scheme implementations, including Chez, ELK 2.1, GAMBIT,
  785.    MITScheme, scheme->C, Scheme48, T3.1, VSCM and Scm4e. It is available by
  786.    anonymous ftp from 
  787.        altdorf.ai.mit.edu:/archive/scm/slib2a1.tar.gz
  788.        prep.ai.mit.edu:/pub/gnu/jacal/slib2a1.tar.gz
  789.        ftp.cs.indiana.edu:/pub/scheme-repository/new/slib2a1.tar.gz
  790.    Now includes a FAQ file.
  791.  
  792.    TEST.SCM is an IEEE and R4RS conformance test suite.  It is available
  793.    from 
  794.       altdorf.ai.mit.edu:/archive/scm/test.scm
  795.       prep.ai.mit.edu:/pub/gnu/jacal/test.scm
  796.       ftp.cs.indiana.edu:/pub/scheme-repository/new/test.scm
  797.  
  798.    PSD (Portable Scheme Debugger) is available by anonymous ftp
  799.    from Tampere University of Technology, Finland,
  800.       ftp.cs.tut.fi:/pub/src/languages/schemes/psd-1.1.tar.Z
  801.    With PSD, you can run a Scheme program in an Emacs buffer, set
  802.    breakpoints, single step evaluation and access and modify the
  803.    program's variables. It works by instrumenting the original source
  804.    code, so it should run with any R4RS compliant Scheme. It has been
  805.    tested with SCM and Elk 1.5, but should work with other Schemes with a
  806.    minimal amount of porting, if at all. Includes documentation and
  807.    user's manual. Written by Pertti Kellom\"aki, pk@cs.tut.fi
  808.    The Lisp Pointers article describing PSD (Lisp Pointers VI(1):15-23,
  809.    January-March 1993) is available as 
  810.       http://www.cs.tut.fi/staff/pk/scheme/psd/article/article.html
  811.  
  812.    SCLINT is a lint-like program for Scheme. It checks for consistency of
  813.    indentation, syntax of special forms, and the number of arguments to
  814.    primitive and most user-defined procedures. This is not a full
  815.    implementation, but rather a quick hack. It is used in teaching
  816.    programming at the Tampere University of Technology. It is available
  817.    by anonymous ftp from 
  818.       ftp.cs.tut.fi:/pub/src/languages/schemes/sclint-0.9.tar.Z.
  819.    For further information, write to Pertti Kellom\"aki <pk@cs.tut.fi>.
  820.  
  821.    A bibliography of work in functional programming can be obtained by 
  822.    anonymous ftp from tamdhu.dcs.st-andrews.ac.uk:/pub/staple/pubs.txt
  823.    (138.251.192.40). It uses a refer-like format with %T for title, %A
  824.    for authors %I for a unique index entry %S for source (possibly a
  825.    reference to another index) %K for keywords and %C for comments.
  826.    Compiled by Tony Davie, <ajtd@honey.st-and.ac.uk>. [Email bounced, 7/7/93.]
  827.  
  828.    Scheme Utilities -- brokaw.lcs.mit.edu:/pub/scmutils.tar  18.30.0.33
  829.    [This collection seems to no longer be located on brokaw -- does
  830.    anybody know the current location?]
  831.  
  832.    A collection of Scheme implementations of data structures and
  833.    algorithms is available by anonymous ftp from 
  834.       ftp.cs.tut.fi:/pub/src/languages/schemes/
  835.    as the file scheme-algorithms.tar. For more information, contact
  836.    Pertti Kellom\"aki <pk@cs.tut.fi>. 
  837.  
  838.    6.001. The User's Manual, example code, and problem sets from MIT's
  839.    course "Structure and Interpretation of Computer Programs" are 
  840.    available by anonymous ftp from martigny.ai.mit.edu:/archive/6.001/
  841.    [18.43.0.152].
  842.  
  843.    Steele's Constraint System. Chris Hanson's implementation of Steele's
  844.    constraint system is available for anonymous ftp from
  845.       martigny.ai.mit.edu:/archive/cph/constraint.tar [18.43.0.152]
  846.       ftp.cs.indiana.edu:/pub/scheme-repository/new/constraint.tar.Z
  847.    A compressed version is also stored there. The software is source code
  848.    for MIT Scheme. It should run in release 7.1.3. Most of the MIT Scheme
  849.    dependencies could be eliminated, but it also uses the following
  850.    procedures which aren't in standard Scheme: error, bkpt, macros,
  851.    dynamic binding, and string output ports. The code corresponds pretty
  852.    closely to Guy Steele's PhD thesis implementation, which you can
  853.    obtain in printed form from the MIT AI Lab publications office as
  854.    AI-TR-595 for $15.00 (email publications@ai.mit.edu for more
  855.    information). For more information, send email to Chris Hanson
  856.    <cph@martigny.ai.mit.edu>.
  857.  
  858.    JACAL is a symbolic mathematics system for the simplification and
  859.    manipulation of equations and single and multiple valued algebraic
  860.    expressions constructed of numbers, variables, radicals, and algebraic
  861.    functions, differential, and holonomic functions. In addition, vectors
  862.    and matrices of the above objects are included.  JACAL is written in
  863.    Scheme and requires SLIB. JACAL source is available via anonymous FTP
  864.    from
  865.       altdorf.ai.mit.edu:/archive/scm/jacal1a4.tar.Z,
  866.       prep.ai.mit.edu:/pub/gnu/jacal/jacal1a4.tar.Z, and
  867.       ftp.cs.indiana.edu:/pub/scheme-repository/new/jacal1a4.tar.Z
  868.    Contact jaffer@altdorf.ai.mit.edu for more information.
  869.   
  870.    Zebu 0.9 is an LALR(1) parser generator for Scheme written by 
  871.    William M. Wells III. It lives in the Scheme Repository 
  872.       ftp.cs.indiana.edu:/pub/scheme-repository/scm/
  873.    and works with PC-Scheme from TI and MIT C-Scheme 6.2 (but not with
  874.    anything after 7.0). 
  875.  
  876.    Thomas is a compiler for the Dylan programming language.  The Thomas
  877.    system is written in Scheme and runs under MIT's CScheme, DEC's
  878.    Scheme->C, and Marc Feeley's Gambit.  It can run on a wide range of
  879.    machines including the Macintosh, PC compatibles, Vax, MIPS, Alpha,
  880.    and 680x0.  Thomas generates IEEE compatible Scheme code.  Thomas is
  881.    available to the public by anonymous ftp at
  882.       crl.dec.com:/pub/DEC/Thomas
  883.       gatekeeper.pa.dec.com:/pub/DEC/Thomas
  884.       altdorf.ai.mit.edu:/archive/Thomas
  885.    For more information on Thomas and Dylan, see part 4 of the Lisp FAQ.
  886.  
  887.    MATCH is a pattern matching macro package for Scheme.  Pattern
  888.    matching allows complicated control decisions based on data structure
  889.    to be expressed in a concise manner. This document describes several
  890.    pattern matching macros for Scheme, and an associated mechanism for
  891.    defining new forms of structured data. This macro package works with
  892.    any Scheme that supports defmacro (which is obtainable by loading
  893.    SLIB), such as Chez Scheme (release 4 or greater). MATCH is available
  894.    by anonymous ftp from titan.cs.rice.edu:/public/wright/match.tar.Z
  895.    [128.42.1.30] and includes the macro source code and documentation. A
  896.    copy should be available from the Scheme Repository shortly.  For
  897.    further information, write to Andrew Wright, <wright@cs.rice.edu>.
  898.  
  899.    Soft Scheme provides the benefits of static typing for dynamically
  900.    typed Scheme.  Like a static type checker, a soft type checker infers
  901.    types for variables and expressions.  But rather than reject programs
  902.    containing untypable fragments, a soft type checker inserts explicit
  903.    run-time checks to transform untypable programs to typable form.
  904.    These run-time checks indicate potential program errors, enabling
  905.    programmers to detect errors prior to program execution.  Soft type
  906.    checking minimizes the number of run-time checks in the compiled code,
  907.    enabling dynamically typed languages to attain the efficiency of
  908.    statically typed languages like ML. Soft Scheme is available by
  909.    anonymous ftp from
  910.       titan.cs.rice.edu:public/wright/softscheme.tar.Z [128.42.1.30]
  911.    For more information, write to Andrew Wright <wright@cs.rice.edu>.
  912.  
  913.    ChezSybase is a Chez Scheme interface to the Sybase database.
  914.    It uses the Chez Scheme foreign function interface to provide a
  915.    high-level Scheme interface to the Sybase db-lib (the API to the
  916.    Sybase database). Most of the db-lib calls and datatypes are
  917.    supported, with the possible exception of spotty support for text and
  918.    image data, and there is no analog to the datetime datatype. It is
  919.    available by anonymous ftp from
  920.       ftp.cs.cmu.edu:/user/ai/lang/scheme/code/io/chez_syb/
  921.    For more information, write to Karl O. Pinc <kop@acm.org>.
  922.  
  923. ----------------------------------------------------------------
  924. Subject: [1-11] Formatting code in LaTeX
  925.  
  926. SLaTeX is a R4RS-compliant Scheme program that allows you to write
  927. program code "as is" in your LaTeX or TeX source.  It is particularly
  928. geared to the programming languages Scheme and Common Lisp, and has
  929. been tested in Chez Scheme, Common Lisp, MIT C Scheme, Elk, Scheme->C,
  930. SCM and UMB Scheme on Unix; and MIT C Scheme and SCM on MSDOS.  The
  931. formatting of the code includes assigning appropriate fonts to the
  932. various tokens in the code (keywords, variables, constants, data), at
  933. the same time retaining the proper indentation when going to the
  934. non-monospace (non-typewriter) provided by TeX.  SLaTeX comes with two
  935. databases that recognize the standard keywords/variables/constants of
  936. Scheme and Common Lisp respectively.  These can be modified by the
  937. user using easy TeX commands.  In addition, the user can inform SLaTeX
  938. to typeset arbitrary identifiers as specially suited TeX expressions
  939. (i.e., beyond just fonting them).  The code-typesetting program SLaTeX
  940. is available by anonymous ftp from 
  941.    cs.rice.edu:/public/dorai/slatex.tar.Z
  942. Send bug reports to dorai@cs.rice.edu.
  943.  
  944. SchemeWEB provides simple support for literate programming in Lisp.
  945. SchemeWEB version 2.0 is a Unix filter that allows you to generate
  946. both Lisp and LaTeX code from one source file.  The generated LaTeX
  947. code formats Lisp programs in typewriter font obeying the spacing in
  948. the source file.  Comments can include arbitrary LaTeX commands.
  949. SchemeWEB was originally developed for the Scheme dialect of Lisp, but
  950. it can easily be used with most other dialects.  Version 2.0 is
  951. available in the Scheme Repository as
  952.    ftp.cs.indiana.edu:/pub/scheme-repository/new/schemeweb.sh
  953. or in the Comprehensive TeX Archive Network (CTAN) in the directory
  954.    ftp.shsu.edu:/tex-archive/web/schemeweb 
  955.  
  956. The Literate Programming FAQ lists a number of alternatives, both
  957. language-independent and Scheme-specific. The Literate Programming FAQ
  958. is posted once a quarter to the comp.literate.programming newsgroup
  959. and is available by anonymous ftp from rtfm.mit.edu. A copy may also be
  960. requested by sending an email message to fileserv@shsu.edu
  961.    sendme litprog.faq
  962. in the body of the message.
  963.  
  964. ----------------------------------------------------------------
  965. Subject: [1-12] Where can I get an implementation of Prolog in Scheme?
  966.  
  967.    Prolog in Scheme is a collection of macros that expand syntax for
  968.    clauses, elations, and so on. It is written in Scheme and has support
  969.    for delayed goals and interval arithmetic. It is known to run in Chez
  970.    Scheme and in Elk, and is intended to be portable to other Scheme
  971.    implementations. It relies on continuations, and so is not easily
  972.    ported to Common Lisp. Available from the University of Calgary by
  973.    anonymous ftp from
  974.       ftp.cpsc.ucalgary.ca:/pub/projects/prolog1.2/prolog12.tar.Z
  975.    Questions and comments may be addressed to Alan Dewar
  976.    <dewar@cpsc.ucalgary.ca> or John Cleary <jcleary@waikato.ac.nz>.
  977.  
  978.    Schelog is an embedding of Prolog in Scheme. It represents Prolog
  979.    goals as procedures in Scheme, and includes macros to simulate a
  980.    Prolog-style syntax for clauses, relations and queries.  The embedding
  981.    permits the user to combine Prolog and Scheme code freely, in the same
  982.    s-expression, if desired.  Documentation and examples are included.
  983.    Schelog should run in any R4RS Scheme, has been tested in SCM and Chez
  984.    Scheme, and will run in any Scheme implementation that supports SLIB (see
  985.    entry in [1-10] above).  Schelog (version 2) is available by anonymous
  986.    ftp from titan.cs.rice.edu:/public/dorai/schelog2.tar.Z.  Its use of
  987.    higher-order continuations is probably a major obstacle to porting it
  988.    to Common Lisp.  For more information, please contact the author Dorai
  989.    Sitaram <dorai@cs.rice.edu>.
  990.  
  991. ----------------------------------------------------------------
  992. Subject: [1-13]  What does SICP, SCOOPS, R4RS, CAR, CDR, ... mean?
  993.  
  994. Glossary of acronyms:
  995.    CAR             Originally meant "Contents of Address portion of Register",
  996.                    which is what CAR actually did on the IBM 704.
  997.    CDR             Originally meant "Contents of Decrement portion of 
  998.                    Register", which is what CDR actually did
  999.                    on the IBM 704. Pronounced "Cudder".
  1000.    ANSI            American National Standards Institute
  1001.    SICP            Abelson and Sussman's book "Structure and
  1002.                    Interpretation of Computer Programs".
  1003.    EOPL            Essentials of Programming Languages 
  1004.    SCOOPS          An experimental object-oriented programming
  1005.                    language for Scheme.
  1006.    R3RS            Revised^3 Report on the Algorithmic Language Scheme.
  1007.    R4RS            Revised^4 Report on the Algorithmic Language Scheme.
  1008.  
  1009. ----------------------------------------------------------------
  1010. Subject: [1-14] Why is there no EVAL in Scheme?
  1011.  
  1012. The answer to this question is based on information provided by 
  1013. Guillermo J. Rozas and Aubrey Jaffer.
  1014.  
  1015. There are three major positions in the Scheme community regarding EVAL:
  1016.  
  1017.    1. No EVAL: EVAL is antithetical to a Pascal-like (compiler based,
  1018.       externally statically linked) implementation for Scheme, such as
  1019.       some people have or wish to see. 
  1020.  
  1021.    2. Single Argument: There is a single distinguished top-level
  1022.       environment, and EVAL always evaluates its argument there. 
  1023.       (This is the approach taken in Common Lisp, where EVAL evaluates
  1024.       its argument in the current dynamic environment and in a null
  1025.       lexical environment.) 
  1026.  
  1027.    3. Two Arguments: There are multiple environments in which
  1028.       the user might want to evaluate expressions, so EVAL should take
  1029.       two arguments, the second being an environment.  In particular,
  1030.       in some systems with first-class environments, there is no
  1031.       a-priori single distinguished top-level environment, and
  1032.       defaulting the environment does not fit those dialects well.
  1033.  
  1034. Not every dialect of Scheme has EVAL. Most do, but some with different
  1035. names and arguments. Jaffer's SLIB package uses LOAD as defined in
  1036. R4RS to define EVAL for those implementations that don't support EVAL
  1037. (e.g., by writing the code out to a file and then loading it).
  1038. Rozas's compromise proposal for EVAL was accepted for R5RS, but it is
  1039. unclear whether there will ever be a R5RS.
  1040.  
  1041. ----------------------------------------------------------------
  1042. Subject: [1-15] World-Wide Web (WWW) Resources
  1043.  
  1044. The World Wide Web (WWW) is a hypermedia document that spans the
  1045. Internet.  It uses the http (HyperText Transfer Protocol) for the
  1046. light-weight exchange of files over the Internet.  NCSA Mosaic is a
  1047. World Wide Web browser developed at the National Center for
  1048. Supercomputing Applications (NCSA). 
  1049.  
  1050. Mosaic's popularity derives, in part, from its ability to communicate
  1051. using more traditional Internet protocols like FTP, Gopher, WAIS, and
  1052. NNTP, in addition to http. Mosaic can display text, hypertext links,
  1053. and inlined graphics directly. When Mosaic encounters a file type it
  1054. can't handle internally, such as Postscript documents, mpeg movies,
  1055. sound files, and JPEG images, it uses an external viewer (or player)
  1056. like Ghostscript to handle the file. Mosaic also includes facilities
  1057. for exploring the Internet. In other words, Mosaic is an multimedia
  1058. interface to the Internet.
  1059.  
  1060. The hypertext documents viewed with Mosaic are written in HTML
  1061. (HyperText Markup Language), which is a subset of SGML (Standard
  1062. Generalized Markup Language).  All that is needed is just a few more
  1063. improvements, such as the ability to format tables and mathematics,
  1064. and a WYSIWYG editor, for HTML to greatly facilitate electronic
  1065. journals and other publications.
  1066.  
  1067. NCSA Mosaic for the X Window System is available by anonymous ftp from  
  1068.    ftp.ncsa.uiuc.edu:/Mosaic/
  1069. as source code and binaries for Sun, SGI, IBM RS/6000, DEC Alpha OSF/1, DEC
  1070. Ultrix, and HP-UX. Questions about NCSA Mosaic should be directed to 
  1071. mosaic-x@ncsa.uiuc.edu (X-Windows version), mosaic-mac@ncsa.uiuc.edu
  1072. (Macintosh), and mosaic-win@ncsa.uiuc.edu (Microsoft Windows).
  1073.  
  1074. A simple HTML version of the Scheme FAQ (this FAQ) is available as
  1075.    http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/scheme/top.html
  1076.  
  1077. The Scheme home page at MIT is
  1078.     http://www-swiss.ai.mit.edu/scheme-home.html
  1079. It includes a nifty little form that lets you execute small examples
  1080. of Scheme code.
  1081.  
  1082. The Scheme Undergound web page is
  1083.     http://www.ai.mit.edu/projects/su/su.html
  1084.  
  1085. ----------------------------------------------------------------
  1086. Subject: [1-16] Why is Scheme called 'Scheme'?
  1087.  
  1088. According to Steele and Gabriel's "The Evolution of Lisp" paper,
  1089. Scheme was originally called Schemer, in the tradition of the AI
  1090. languages Planner and Conniver. But the ITS operating system had a
  1091. 6-character limitation of file names, so the names were shortened to
  1092. PLNR, CNVR, and SCHEME. Eventually the truncated name Scheme stuck.
  1093.  
  1094. ----------------------------------------------------------------
  1095. ;;; *EOF*
  1096.  
  1097.