diff options
author | bnewbold <bnewbold@eta.mit.edu> | 2009-01-16 05:14:20 -0500 |
---|---|---|
committer | bnewbold <bnewbold@eta.mit.edu> | 2009-01-16 05:14:20 -0500 |
commit | ce9e1069c11223190ac264c586ebe8aff21c3735 (patch) | |
tree | 015385852ba62ab6e195bb094905a0bf845d1253 /books/Seasoned Schemer | |
parent | 823441e43dd007d4e8931fb236ffbeada12eabd2 (diff) | |
download | knowledge-ce9e1069c11223190ac264c586ebe8aff21c3735.tar.gz knowledge-ce9e1069c11223190ac264c586ebe8aff21c3735.zip |
added seasoned so far, minor changes
Diffstat (limited to 'books/Seasoned Schemer')
-rw-r--r-- | books/Seasoned Schemer | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/books/Seasoned Schemer b/books/Seasoned Schemer new file mode 100644 index 0000000..ed2a3fb --- /dev/null +++ b/books/Seasoned Schemer @@ -0,0 +1,53 @@ +============================ +The Seasoned Schemer +============================ + +:by: Daniel Friedman and Matthias Felleisen +:Edition: First (1st) + +See also `Scheme </k/software/scheme/>`__. + +This book is a sequel `The Little Schemer`_; +The Reasoned Schemer is a paralel exploration of logical programming. + +.. _The Little Schemer: /k/books/littleschemer/ + +Issues/Omissions +-------------------------- +The Y combinator function is never defined in this book, I had to copy it out of +`The Little Schemer`_; + + (define Y + (lambda (thing) + ((lambda (le) + ((lambda (f) (f f)) + (lambda (f) (le (lambda (x) ((f f) x)))))) + thing))) + +MIT/GNU Scheme doesn't seem to have ``letcc`` or ``try``; I stuck with +``call-with-current-continuation``: + + (call-with-current-continuation (lambda (hook) ...) + ; is the same as + (letcc hook (...)) + + ; as noted in the book (p. 89) + (try x a b) + ; is the same as + (letcc success + (letcc x + (success a)) + b) + ; is the same as + (call-with-current-continuation + (lambda (success) + (begin + (call-with-current-continuation + (lambda (x) + (success a))) + b))) + + +The Next 10 Commandments +-------------------------- +TODO |