Top positive review
11 people found this helpful
5.0 out of 5 starsit is not as easy as that
ByStephen Cagleon 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!