Apps Industrial Deals Beauty Save up to 85% on textbooks Women's statement sneakers nav_sap_plcc_ascpsc Unlimited Music. Always ad-free. Learn more. STEM Introducing Fire TV Cube Grocery Handmade Personalized Jewelry modern furniture and decor Book a house cleaner for 2 or more hours on Amazon TheGrandTour TheGrandTour TheGrandTour  Echo Fire tablets: Designed for entertainment Kindle Paperwhite GNO Shop now SWMTVT18_gno



on December 2, 2016
I gave this book 5 stars, but as this book is in a complete category of its own, that is kind of a technicality. The Reasoned Schemer is a book that introduces you to the notion, usage, and application of logic programming. It is entirely structured in a question/answer format, which slowly introduces you to all the base "control" structures you would need in logic programming.

Non logic programming basically works from the notion of imperative data flow. This is generally represented by the concept of a function. A function takes a argument and returns a value, it takes input variables and returns output variables. A logic program creates a relation (not a function) between a set of variables. If you had a two input function, with one output, you could represent this as a logic program relation of three variables. Two of those relation variables would be what were the two inputs to the function, the third variable would be the output of the function. Here is the kicker though. You can provide concrete values for any number of those variable in any order and ask the relation what the other variables might be. At the simplest level, this means that you might run your function "backwards" (from the output to the input). But really, it means that you can ask any question relating to those variables (conceptually). Now, realistically, it is not as easy as that. Some relations may never terminate (return a answer), some grow too large and barf (overflow), some may not complete for various other reasons. It can be more complex to actually write a logical relation than a function, this must be balanced against the fact that the relation is far more powerful than the function.

If you want a primer for logical programing, this book is probably worth your time. It takes you through writing many of the fundamental parts of a logical relation. The only thing I think it really skips is the actual unification (= x y) primitive itself, which I believe it uses as a given. You can learn quite a bit by reading this code slowly and carefully. Note however, that you must complete every step of the question/answer pairings! Skimming this book will not work (unless you already know it). Really, these concepts build on each other. It is a rather small (page number and physically) book, but it will take far more time to really go through then its size would suggest. Read and work through for the purpose of understanding, and I think you will really get a good backing in logic programming, and probably enjoy yourself as well!

Note: The above statements applied to the paper edition.

The Kindle version of this Book is pure garbage. Here I am, on a 2016 Macbook Pro with a Retina Display and I can barely read the damn thing. I tried reading on my Android, just awful. I tried on my Windows PC, same. A good deal of the information in this book is communicated by bolding and italics. These are incredibly difficult to see in the Kindle version. Shame on the publisher for releasing such an inferior thing to the public. Disappointed in Amazon for not enforcing minimum legibility standards on non free Kindle books. DO NOT EVEN CONSIDER BUYING THE KINDLE EDITION!
11 people found this helpful
11 comment Report abuse
on February 4, 2007
As the saying goes, if you like this sort of thing, this is the sort of thing you'll like. The authors have extended the approach of their classic book _The Little Schemer_ to encompass what is usually called logic programming, but which they refer to as "relational programming" (a much better name, in my opinion). They extend the Scheme language with relational analogues of many constructs, notably lambda and cond (in many, many variations), and also provide extended versions of standard Scheme operations like cons, car, and cdr. Basically, the relational approach involves taking the result of a function call and making it just another argument, but a special argument that can get assigned to as the result of the computation. Big deal, so what? you ask. The important thing is that _all_ of the function arguments behave this way, so that you can specify the result of a function (relation) and ask the system to generate the arguments. For instance, instead of saying 2 + 2 = X and figuring out what X is, you can say X + 2 = 4 and the system will figure out what X has to be (in this case... ummm... oh yeah, 2). To do this, the system uses a mechanism called "backtracking" which systematically tries alternatives until it either finds the answer, gives up, or (if you didn't program the search right) goes on forever. If you haven't seen this style of programming before, this book will definitely open your eyes.

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.
30 people found this helpful
0Comment Report abuse
on February 6, 2014
Careful and engaging walkthroughs of logic programming from bottom-up. No detail is missed, and you can implement your own system in any language from this description. Would have enjoyed seeing some non-academic scenarios like querying business data. Also, the Kindle edition is hard to read because the print is super tiny.
5 people found this helpful
0Comment Report abuse
on January 28, 2018
Lost me on the first chapter. They need to make smaller logic leaps.
One person found this helpful
11 comment Report abuse
on May 19, 2009
I must say that I was expecting lesson on building logical system that this book completely lacks fallowed with examples of using it. But this book is only about using the Kanren logical system that authors designed. There is no ebook version that's completely inconvenient I was so frustrated with holding the dead tree and typing that I finally scanned the whole thing to keep my hands on the keyboard. The code in the book can't be just typed and tried but you have to apply substitution rules of the author weird symbols in your head. For example succeed is written as #s in the book but you should type succeed. Or run must actually take another argument like (run #f (q) while the author insists on writing (run (q). Neither pseudo code neither working scheme.
Nowhere in the preface does authors mentions that I should download the source code [...] , BTW the implementation code is excellent, and some supported implementation in order to actually run the programs.
When you add everything I wouldn't buy this book if I knew all this but on the other hand I'm not inclined to ask for a refund.
3 people found this helpful
0Comment Report abuse
on December 27, 2012
The style of the the Reasoned Schemer is quite unique - at times refreshing yet at other times frustrating. I don't know if this is the best format to present the material, as I often wished for a little prose or some sidebars to help me understand things. While I can certainly imagine other ways the book could have been written, I can say that as frustrating as the book can be, I was able to understand the concepts, and perhaps at a depth that my imagined alternative would have gotten me. Until such an alternative exists to evaluate, I'll recommend the Reasoned Schemer to anyone who wants to dive deeply into logic programming.
One person found this helpful
0Comment Report abuse
Functional programming and programmed instruction is a great pair. If more programmers read this, the world would be spared much bad coding.
One person found this helpful
0Comment Report abuse
on October 26, 2015
Really good introduction to the topic.
No where near as funny as advertised.
To the point and hinting at complications without getting distracted. Short but still compleat.
One person found this helpful
0Comment Report abuse
on February 12, 2012
This electronic publication is useless.
Can't read a thing out of it. Most pages are images not text.
Zooming in doesn't help.
It feels like reading PDF, except it is worse.

Sorry can't say anything about the content, until I get a paperback version.
17 people found this helpful
11 comment Report abuse
on May 4, 2011
So. I read the Little Lisper a couple of years ago and enjoyed it. I finally got around to buying this book last night for my new Kindle. BIG mistake. It is unreadable. The font size can only be changed for the preface, acknowledgements and contents overview. The actual meat of the book CANNOT be altered with any settings on the Kindle. It's not a PDF so I can't zoom and the font is soooo small (about a millimeter high) it is unreadable even with 20/15 vision!

I wish I could actually comment on the book itself...

Buy the dead tree version.
37 people found this helpful
22 comments Report abuse

Sponsored Links

  (What's this?)