Dear educators and users of our teaching languages,

Dave Tompkins from Waterloo brought to our attention that I failed to
properly warn about a change to the teaching languages of HtDP.  

Since the change may affect your teaching materials, we want

-- to alert you now in case you need to adjust things for the fall
   semester/new school year

-- to request your input on how to help you with this transition. 

The rest of the message first explains the CHANGE and its IMPACT on
PROGRAMMING, PRINTING VALUES, and STEPPING through programs. It then 
explains the RATIONALE, and finally gets back to the TRANSITION. 

-----------------------------------------------------------------------------
THE CHANGE --- Over release 6.1.1 (last fall) and 6.2 (just now), HtDP/2e
and *SL gradually introduced

  '() for empty lists
  #true for truth
  #false for falsity

The idea was to inject this change into DRAFTS unlikely to be used by
instructors and to warn them of these changes and let them inspect the
materials and software. 

-----------------------------------------------------------------------------
IMPACT on PROGRAMMING --- All of your programs will continue to run because
the teaching languages still come with the pre-defined identifiers

  empty for empty list
  true for truth
  false for falsity

-----------------------------------------------------------------------------
IMPACT on PRINTING THE VALUES OF PROGRAMS --- While programs continue to
run as is, some of their resulting values will be rendered differently. 

 Examples:

 in BSL
 > (remove 1 '(1))
 '()
 instead of empty

 in ISL
 > (andmap odd? '(1 2 3))
 #false
 instead of false

We firmly believe that students will comprehend the results anyway. 

-----------------------------------------------------------------------------
IMPACT on STEPPER --- Due to my negligence, the stepper is currently in an
 partly inconsistent state with respect to this problem. 

It is built so as to cope with such changes automatically, which means that
 it picks some default renderings for truth, falsity, and emptiness. We
 consider this problem a bug. 

-----------------------------------------------------------------------------
RATIONALE --- If your book/courses focuses on design and ignores all
connections to Racket, the idea of using identifier-like literal constants
for these three entities is acceptable. 

Neither HtDP/2e nor HtDP/1e do so. Both try to expose readers to some of
ideas found in Racket (Scheme), and how they make programming much more
convenient. One of these ideas -- still not found in ML, Haskell, Java, or
similar languages -- is quoting and unquoting.

Since un/quoting is in the teaching languages, identifier-like literal
constants are a philosophical mistake. Our change fixes this old mistake.

-----------------------------------------------------------------------------
TRANSITION --- We recognize that your time is valuable and you may not be
able to edit your materials in time for the next school year, though we
sincerely hope that you eventually will. 

First, we intend to release another (minor) upgrade of Racket to fix some
of the problems with the stepper. Second, if teachers are interested, we
will investigate the possibility of making the old HtDP printer for values
available via a language preference. Students would have to choose this
option explicitly but we are confident that they can do so. 

If there is anything else you think we could do to smoothen this transition,
please feel free to propose specifics. 

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to