From f61026119df4700f69eb73e95620bc5928ca0fcb Mon Sep 17 00:00:00 2001 From: User Date: Tue, 13 Oct 2009 02:52:09 +0000 Subject: Grand rename for gitit transfer --- books/Little Schemer | 108 --------------------------------------------------- 1 file changed, 108 deletions(-) delete mode 100644 books/Little Schemer (limited to 'books/Little Schemer') 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 `__. - -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 -`__. - -This book is followed by `The Seasoned Schemer `__ -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. - -- cgit v1.2.3