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.