summaryrefslogtreecommitdiffstats
path: root/books/Little Schemer
diff options
context:
space:
mode:
authorUser <bnewbold@daemon.robocracy.org>2009-10-13 02:52:09 +0000
committerUser <bnewbold@daemon.robocracy.org>2009-10-13 02:52:09 +0000
commitf61026119df4700f69eb73e95620bc5928ca0fcb (patch)
treef17127cff9fec40f4207d9fa449b9692644ce6db /books/Little Schemer
parent9d431740a3e6a7caa09a57504856b5d1a4710a14 (diff)
downloadknowledge-f61026119df4700f69eb73e95620bc5928ca0fcb.tar.gz
knowledge-f61026119df4700f69eb73e95620bc5928ca0fcb.zip
Grand rename for gitit transfer
Diffstat (limited to 'books/Little Schemer')
-rw-r--r--books/Little Schemer108
1 files changed, 0 insertions, 108 deletions
diff --git a/books/Little Schemer b/books/Little Schemer
deleted file mode 100644
index 394de5b..0000000
--- a/books/Little Schemer
+++ /dev/null
@@ -1,108 +0,0 @@
-============================
-The Little Schemer
-============================
-
-:by: Daniel Friedman and Matthias Felleisen
-:Edition: Fourth (4rth)
-
-See also `Scheme </k/software/scheme/>`__.
-
-I read this book before starting on a scheme/physics project. I had programmed
-in scheme previously as an algebra/analysis tool, but never really sat down
-and got comfortable with the language. Working through all the examples
-has made me *much* more comfortable with this style of programming. Despite
-the humble tone and ambitions of the book I think I learned deeply.
-
-The first 7 chapters were very straight forward, the end of chapter 8 took
-some more thought and I'm not sure how happy I am with the description of
-collectors and continuations.
-
-For a better description of the Y-combinator, see these `course notes
-<http://dangermouse.brynmawr.edu/cs245/ycomb_jim.html>`__.
-
-This book is followed by `The Seasoned Schemer </k/books/seasonedschemer/>`__
-and The Reasoned Schemer.
-
-Preface Definitions
-------------------------
-This primitive function is required for most of the functions in the book::
-
- (define atom?
- (lambda (x)
- (and (not (pair? x)) (not (null? x)))))
-
-Laws
------------------------
-Law of Car
- The primitive *car* is defined only for non-empty lists.
-
-Law of Cdr
- The primitive *cdr* is defined only for non-empty lists. The *cdr* of any
- non-empty list is always another list.
-
-Law of Cons
- The primitive *cons* takes two arguments. The second argument to *cons*
- must be a list. The result is a list.
-
-Law of Null?
- The primitive *null?* is defined only for lists.
-
-Law of Eq?
- The primitive *eq?* takes two arguments. Each must be a non-numeric atom.
-
-Commandments
-------------------------
-
-The First Commandment
- When recurring on a list of atoms, *lat*, ask two questions about it:
- *(null? lat)* and **else**. When recurring on a number, *n*, ask two
- questions about it: *(zero? n)* and **else**.
-
- When recurring on a list of S-expressions, *l*, ask three questions
- about it: *(null? l)*, *(atom? (car l))*, and **else**.
-
-The Second Commandment
- Use *cons* to build lists.
-
-The Third Commandment
- When building a list, describe the first typical element, and then
- *cons* it onto the natural recursion.
-
-The Fourth Commandment
- Always change at least one argument while recurring. It must be changed to
- be closer to termination. The changing argument must be tested in the
- termination condition:
-
- when using *cdr*, test termination with *null?* and
-
- when using *sub1*, test termination with *zero?*.
-
-The Fifth Commandment
- When building a value with +, always use 0 for the value of the terminating
- line, for adding 0 does not change the value of an addition.
-
- When building a value with x, always use 1 for the value of the terminating
- line, for multiplying by 1 does not change the value of a multiplication.
-
- When building a value with cons, always consider () for the value of the
- terminating line.
-
-The Sixth Commandment
- Simplify only after the function is correct.
-
-
-The Seventh Commandment
- Recur on the subpart that are of the same nature:
-
- * on the sublists of a list.
- * on the subexpressions of an arithmetic expression.
-
-The Eighth Commandment
- Use help functions to abstract from representations.
-
-The Ninth Commandment
- Abstract common patterns with a new function.
-
-The Tenth Commandment
- Build functions to collect more than one value at a time.
-