The Reasoned Schemer Paperback – Oct 14 2005
Frequently Bought Together
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
Getting the download link through email is temporarily not available. Please check back later.
To get the free app, enter your mobile phone number.
Contrary to popular belief, logic programming doesn't always mean programming in Prolog. In this groundbreaking book, Friedman and Kiselyov extend Scheme to form a completely new kind of logic programming system, one which is in many ways even more elegant than Prolog. Written in the same classic question-and-answer format as the authors' previous book The Little Schemer, The Reasoned Schemer covers goals, first-class relations, interleaved and non-interleaved backtracking, the relationship between relational and functional programming, and much more. Reading this book will not only cause your geek rating to skyrocket and impress all the Cool Kids, it will also open your eyes to a paradigm of programming which most programmers are completely unaware of, but which will undoubtedly play a significant role in the programming systems of the future. More importantly, though, this book is great fun to read and will make you a better programmer.(Michael Vanier, Caltech)
About the Author
William E. Byrd is a PhD candidate in Computer Science at Indiana University.
Oleg Kiselyov is a computer scientist from Monterey, California.
What Other Items Do Customers Buy After Viewing This Item?
Top Customer Reviews
I've placed this book #13 in my Top 100 Programming, Computer and Science books list:
Most Helpful Customer Reviews on Amazon.com (beta)
I have no relationship with any of the authors and just want to put my $0.02 in on it, since not many others may have a copy yet- I think it is absolutely FANTASTIC so far!
The book itself is very much in the same style as the rest of the "Schemers"- A Q&A style of exposition that helps your brain to absorb most of the essence of a new programming style without having to spend the time to write tons of actual code yourself to learn the basic philosophy.
The main purpose of the book is to attach a set of logic programming commands to the core R5RS scheme that allow you to implement all kinds of cool things, such as constraint programming, pattern matching, nondeterministic programming, and PROLOG-like logical reasoning. The material covered is not too dissimilar from the material in the back of "On Lisp" or some parts of SICP. What distinguishes it is that the implementation used has been widdled down to its bare essence and uses a syntax modeled on standard FP scheme syntax. Plus, the subject matter is treated with a certain academic rigor that gives these new commands the feeling of a practical toolset instead of just a clever novelty. I could imagine incorporating these commands into my regular scheme code...
As I mentioned, there is a list of new mysterious scheme commands that enable the logic reasoning abilities- They look superficially like the standard FP commands in scheme, but behave slightly different- They have names such as "conde", "caro", etc. There are also a couple of commands with no FP scheme analogue, such as "run" and "fresh". Using these new commands, logical reasoning can be mixed with standard FP scheme pretty seamlessly. An appendix at the end of the book implements the full set of commands- It totals about 150 LOC in length.
I'm still only partially into the book, but just wanted to let folks know that this book has some really mind-blowing ideas and may be the answer to those, like me, who are still searching for a resource that will allow them to "get" PROLOG-like languages and want to learn how to incorporate such techniques into their programming projects with the least amount of fuss possible.
The relational/logic programming style is usually learned by studying the Prolog language, which is how I learned it (though I'm no expert). Having a knowledge of Prolog will definitely make this book easier to understand, although the approach given here is more modern than Prolog in several ways. For one thing, the named relations of Prolog are replaced here by anonymous relations (analogous to lambda expressions being anonymous functions), and for another, the (somewhat brutal) "cut" operator of Prolog, which is used to control backtracking, is ignored in favor of more subtle approaches involving interleaving solutions and giving up after single results are found.
I think the approach of learning-by-pattern-recognition that all the "Little X" books use is fairly effective here, though I think a lot of readers (meaning me) wouldn't mind a more extended discussion of the mechanics of the system.
All in all, if you liked _The Little Schemer_ and are curious about new ways of programming, you should definitely pick up a copy of this book. It will stretch your mind like a Slinky, and when you're done you'll have learned a new way of looking at programming.
Some readers might object to the books use of a coding style that is not executable Scheme. To my surprise I found the source format a great help to readability. Translating the text into executable Scheme code was effortless even though the book assumes that you will figure how to run the code for yourself (search engines and a little experimentation should quickly lead you to miniKanren). Probably the weakest part of the book is an overly long and tedious development of a system of arithmetic, but that example does demonstrate how far logic programs can go. I was somewhat alarmed by the incredibly terse implementation note at the end of the book. I'd be surprised if most readers would just "get" the implementation strategy.
While I enjoyed working through this book I had the nagging suspicion that it might not be the introduction to logic programming I would personally recommend. To check for an example I reopened my (unfortunately long neglected) copy of Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp. I have to conclude that Norvig's 18 year old chapter on Prolog still seems a more succinct and complete introduction. But then I'm tainted by having programmed in Prolog before, and I also have to consider that "AI" is so unhip today that few newly minted programmers would go pick up that old classic. So go ahead, get yourself a copy of The Reasoned Schemer. It is a book that no truly curious programmer will regret reading. Not even those that unify every day.
I read the Little Schemer from one end to the other, and I simply adored it. It taught me so much that I hadn't really grasped before, and it taught me how to program. I can't recommend The Little Schemer hight enough for persons who wants to know what programming is really about.
The Reasoned Schemer builds on the same idea, and I was therefor very eager to get started with it. Unfortunately, even though this book follows the same recipe as The Little Schemer, the actual implementation of this recipe is very poorly conducted. Where The Little Schemer was careful in its stepwise built-up of knowledge, making certain no assumptions were left unexplained, this book seems to have been written more hurriedly - the author seems to have forgotten to clear his mind for all the stuff that he finds obvious, but which the intended group of readers is in fact only just beginning to learn. I think the basic idea behind these books really has something going for it. Reading this book, I realize a good recipe also need a good cook and good preparation. The author of this book certainly is a good cook, but, it seems he badly neglected taking the time it takes, to think this book through.
Conclusively, I can in no way recommend this book. It is simply too poorly implemented.
I wish I could actually comment on the book itself...
Buy the dead tree version.
Look for similar items by category
- Books > Computers & Technology > Computer Science
- Books > Computers & Technology > Programming
- Books > Computers & Technology > Software
- Books > Qualifying Textbooks - Fall 2007 > Computers & Internet
- Books > Textbooks > Computer Science & Information Systems > Computer Science
- Books > Textbooks > Computer Science & Information Systems > Programming Languages