On Thu, Aug 13, 2020 at 12:13 AM Wolfgang Corcoran-Mathe <xxxxxx@sigwinch.xyz> wrote:
 
(1) "The scope of this SRFI is not to implement the whole drawing
library..." If the SRFI implementation doesn't provide the actual
drawing routines, and also doesn't provide an extensive drawing
library, it seems too limited to be useful--the bottom and top
"layers" are both missing, and much of what it does provide is
unspecified.

 Those things are true, but I believe they miss the point of the SRFI.  The SICP drawing language (SDL) is not intended as a general-purpose language for drawing, but as a tool for experimentation that "is designed to make it easy to experiment with patterns [...] composed of repeated elements that are shifted and scaled".  As such, its purpose is more pedagogical than practical, and there is really no point in adding more features to SDL: it is what it is.

As things now stand, with just a few shim procedures you can work through all the SICP exercises with any Scheme — until you come to 2.2.4, and then you are blocked unless you are working with MIT Scheme or Racket (possibly others?).  SDL is already documented in SICP 2.2.4[1]; , and the non-primitive code is in the SICP repo[2], but that is not enough to make it usable.

What this SRFI defines is the set of primitives which a Scheme must provide in order to host SDL.  Screen graphics being as non-portable as they are, it's necessary for the Scheme to provide a canvas and the ability to draw lines on it.  The portable implementation uses a JPEG file (I think) as the drawing canvas, which is clunky but correct.

This SRFI can be compared to SRFI 96, which is to SLIB as this SRFI is to SDL.  SRFI 96 makes no attempt to document SLIB (which has over 200 modules), much less to extend it.  Instead, it documents the constants, variables, procedures, and syntax forms that a Scheme must provide in order to fully host SLIB, which amount to less than forty.

(SRFI 96 should eventually be updated for R6RS and R7RS, and also to see which of the primitives are not actually in use in the current SLIB release so that they can be removed.  I've tried to do this a number of times, but to no avail: it's not a trivial effort.)

Vladimir: Feel free to add any or all of the above prose to the SRFI 203 Rationale.

[1] <https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-15.html#%_sec_2.2.4>

[2] <https://mitpress.mit.edu/sites/default/files/sicp/code/ch2.scm>



John Cowan          http://vrici.lojban.org/~cowan        xxxxxx@ccil.org
Any day you [see] all five woodpeckers is a good day.  --Elliotte Rusty Harold