[comp.lang.scheme] EdScheme: summary

haltraet@gondle.idt.unit.no (Hallvard Traetteberg) (06/07/91)

A week ago I posted a request for information about EdScheme, a
scheme implementation for PCs. I refered to an article in BYTE, giving som
technical information about EdScheme. These where partly wrong, which most of
the answers pointed out. Overall the answers gave a very positive impression
of the product (including that of the implementor :-). A summary follows (it
became fairly long, because EdScheme seemed to be a product deserving
attention, especially by teachers):

Product data:

   From Terry Kaufman <71020.1774@CompuServe.COM>, the implementor:

   [The product brochure] fully describes our products which
   include a textbook, "The Schemer's Guide", a teacher's manual, "The
   Scheming Teacher's Guide", and the EdScheme software.

   EdScheme is currently available on three platforms:  IBM, Atari, and
   Archimedes.  It will be available on the Macintosh this September. 

   From 70262.630@compuserve.COM (Iain Ferguson):

   Schemers Inc also offers an introductory CS text (The Schemer's Guide --
   TSG) aimed at the high school, junior college, university freshman market
   that uses Scheme as its vehicular language.

Use of memory:

   From Terry Kaufman <71020.1774@CompuServe.COM>, the implementor:

   [text deleted]  
   Only on the IBM is memory somewhat limited for garbage collecting due
   to the fact that it does not use expanded or extended memory.  Note, 
   however, that the statement in BYTE magazine that only 24K bytes are
   available is false.  In fact, the garbage collected workspace is 24K
   PAIRS and more if the editor is not used. [text deleted]  On our other
   platforms, the only limitation is the amount of main memory available. 

   As its name suggests, EdScheme is aimed primarily at the educational
   users; therefore, one concern that is very important to us is to keep
   the software small enough to be runnable from a floppy disk and with
   only a modest amount of memory.

   From 70262.630@compuserve.COM (Iain Ferguson):

   One of EdScheme's virtues is its runnability from a floppy on 
   computers that have only modest amounts of memory available.

About the editor/evaluator:

   From max@nic.gac.edu (Max Hailperin):

   [text deleted] The degree of integration seems to be limited only in that
   you can only evaluate something from the editor as part of returning to
   scheme read/eval/print loop, as opposed to being able to evaluate something
   but stay in the editor.  This isn't so terrible, it's the way MIT
   Scheme used to work a decade ago and I was pretty comfortable with it
   then (though I admit to prefering the current setup).

   From Terry Kaufman <71020.1774@CompuServe.COM>, the implementor:

   Most of our users point out that one of the most attractive features of
   EdScheme is the ease of use of the editor, and how well integrated it
   is into the system as a whole.

The language:

   From Terry Kaufman <71020.1774@CompuServe.COM>, the implementor:

   [text deleted] two modes of operation: an Educational mode and
   a Standard Scheme mode.  The Educational mode is designed for 
   use in introductory CS courses since it mirrors what appears in "The
   Schemer's Guide" textbook and includes thorough checking of function
   arguments.  The Standard Scheme mode is faster and corresponds more
   closely to the IEEE Standard, and is provided for more advanced
   schemers.

   From max@nic.gac.edu (Max Hailperin)

   My impression was that even with "standard mode" on, it wasn't
   exceptionally close to compliant with R^nRS or IEEE standards.

   From bh@anarres.berkeley.EDU (Brian Harvey):

   [text deleted] I reviewed the book for a potential publisher and reviewed
   the software along with it.  Here is what I said to them about EdScheme:

   Good points:

	* printable environments (avoiding circularity problems)
	  and therefore printable procedures.  This is great!  It's
	  a big help in debugging as well as in explaining things.
	  This is my favorite EdScheme feature.

	* Turtle graphics.  This should make the language more fun
	  and more accessible to visual thinkers.

   Bad points:

	* Incompatibility with R3RS (the Scheme standard document):
          [text deleted]
		+ lower and upper case distinguished in symbols
		+ delay doesn't memoize
		+ many missing essential procedures:
			eqv? append memq assq max min complex? abs char?
                        string-length procedure? map cxxr.
		+ NOT doesn't accept non-#t/#f args
		+ COND doesn't accept one-expression clauses
			(COND (3)) should return 3
		+ (lambda (a b . args) body) syntax

	* Incompatibility with Abelson and Sussman terminology.
	  Although the standard doesn't say one way or the other,
	  A&S want (atom? '()) to be true, not false.  Also, it would
	  simplify life if () and #f were the same thing, which is
	  permitted by the standard.  That's controversial, though.

   Things I have mixed feelings about:

	* The fact that procedures are not a separate type.  I think it's
	  great that procedures are PRINTABLE like lists, but really they
	  should be atomic (that is, (ATOM? FIRST) should be true), and
	  you shouldn't be able to modify them with set-car! and so on.

	* The red/black stuff.  [Things that are meant to represent
	  executable process are in black; "data" are in red.]
	  This provides, somewhat artificially,
	  a way to talk about things like the evaluation of numbers and
	  quote forms, and that's good.  But the cost is that it hides
	  a key idea, the fact that programs ARE just data.  This gets
	  awkward when the text ends up saying "Scheme blackens the red
	  FD" and things like that.  In practice, 99% of the time, all
	  that happens is that the user types in black and Scheme types
	  in red, and I bet many students don't understand the colors
	  any more deeply than that.

EdScheme for teaching:

   From max@nic.gac.edu (Max Hailperin):

   [] one quite striking fact is that it color codes its user
   interaction, with three seperate (configurable) colors for unevaluated
   forms, evaluated forms, and other output (e.g. error messages).  This
   ties in with the book, where the color distinction is made to make the
   substitution model of evaluation make sense even with things like
   symbols and lists being substituted in (so you can tell what is
   already evaluated and not evaluate it again).

   From bh@anarres.berkeley.EDU (Brian Harvey)

   [Things I have mixed feelings about:]
	* The red/black stuff.  [Things that are meant to represent
	  executable process are in black; "data" are in red.]
	  This provides, somewhat artificially,
	  a way to talk about things like the evaluation of numbers and
	  quote forms, and that's good.  But the cost is that it hides
	  a key idea, the fact that programs ARE just data.  This gets
	  awkward when the text ends up saying "Scheme blackens the red
	  FD" and things like that.  In practice, 99% of the time, all
	  that happens is that the user types in black and Scheme types
	  in red, and I bet many students don't understand the colors
	  any more deeply than that.

   From 70262.630@compuserve.COM (Iain Ferguson)

   [text deleted] color-coding provides the teacher with a
   superlative tool for explaining how it is that Scheme procedures can
   input and output other Scheme procedures.

   In particular, it enables the teacher to clarify the crucial point that
   while the (black) expression '(lambda (x) x)' is NOT a procedure, the 
   (red) result of evaluating it IS. [text deleted]  Armed with a clear and
   deep understanding, my ninth grade students (aged 15) manipulate higher
   order functions with ease.

   As background, Schemers Inc. was formed by some high school teachers
   who are trying to change the way CS is taught in the schools.  Their
   book "The Schemer's Guide" has many strong points, and I would
   definitely recommend its consideration for its intended audience; further,
   it would even be at home in some post-secondary settings, particularly
   those desiring a more gentle introduction than, e.g., Abelson and
   Sussman's "Structure and Interpretation of Computer Programs."
--

                                                           - hal