Introduction to Computing
Explorations in Language, Logic, and Machines
David Evans

Errata

Exercise 2.14 - letterDigitHyphen not defined! (corrected 2009-12-29)

Exercise 3.8 - the example is incorrect! "For example, (xor true true) should evaluate to false and (xor (< 3 5) (= 8 8)) should evaluate to true." should be "... (xor (< 3 5) (= 8 8)) should evaluate to false.". The output of the xor is false, since both of the inputs evaluate to true. (Thanks to Awab Osman) (5 July 2018)

p. 100: list-increment 1 2 (corrected sometime in 2010)

p. 130: (thanks to Anna Slagle) "The right output bit (r_0) is 1 when exactly one of the input bits is a 1: r_0 = (or (and (not A) B) (and A (not B))" (corrected sometime in 2010)

p. 152 n = 38 (thanks to Kristine Dell)

p. 166 "xists" (corrected 2009-12-29)

Chapter 9 - the Charme interpreter code does not follow Python naming conventions (this is a more open issue, and there are good arguments in favor of various naming conventions, but it would be best if this is rewritten to follow Python's naming conventions)

Chapter 8 (p. 172) - the code for merge-indexes has 3 extra closing parentheses at the end (thanks to Ezio Da Fonseca) (corrected in book sources, 2013-10-13)

p. 199 - Before (ask counter 'adjust! 5) we need to redefine counter: (define counter (make-adjustable-counter)). (Thanks to Ezio Da Fonseca, corrected in book sources, 2013-10-22)