or
Sign in to turn on 1-Click ordering.
 
 
Express Checkout with PayPhrase
What's this? | Create PayPhrase
Sorry!
More Buying Choices
35 used & new from $14.98

Have one to sell? Sell yours here
 
   
The Reasoned Schemer
 
 
Tell the Publisher!
I’d like to read this book on Kindle

Don’t have a Kindle? Get your Kindle here.
 
  

The Reasoned Schemer (Paperback)

~ (Author), William E. Byrd (Author), Oleg Kiselyov (Author)
4.0 out of 5 stars  See all reviews (5 customer reviews)

List Price: $28.00
Price: $25.20 & this item ships for FREE with Super Saver Shipping. Details
You Save: $2.80 (10%)
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
In Stock.
Ships from and sold by Amazon.com. Gift-wrap available.

Want it delivered Tuesday, November 10? Choose One-Day Shipping at checkout. Details
17 new from $19.96 18 used from $14.98

Frequently Bought Together

The Reasoned Schemer + The Seasoned Schemer + The Little Schemer - 4th Edition
Price For All Three: $56.21

Show availability and shipping details

  • This item: The Reasoned Schemer by Daniel P. Friedman

    In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details

  • The Seasoned Schemer by Daniel P. Friedman

    In Stock.
    Ships from and sold by Amazon.com.
    Eligible for FREE Super Saver Shipping on orders over $25. Details

  • The Little Schemer - 4th Edition by Daniel P. Friedman

    In Stock.
    Ships from and sold by Amazon.com.
    Eligible for FREE Super Saver Shipping on orders over $25. Details


Customers Who Bought This Item Also Bought

The Little Schemer - 4th Edition

The Little Schemer - 4th Edition

by Daniel P. Friedman
4.0 out of 5 stars (36)  $15.79
The Scheme Programming Language, 4th Edition

The Scheme Programming Language, 4th Edition

by R. Kent Dybvig
4.8 out of 5 stars (6)  $30.24
How to Design Programs: An Introduction to Programming and Computing

How to Design Programs: An Introduction to Programming and Computing

by Matthias Felleisen
4.7 out of 5 stars (11)  $54.83
Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)

Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)

by Harold Abelson
3.5 out of 5 stars (161)  $68.80
Purely Functional Data Structures

Purely Functional Data Structures

by Chris Okasaki
4.3 out of 5 stars (6)  $41.65
Explore similar items

Editorial Reviews

Review

"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

"Some programmers are particularly fascinated by new ways of thinking about programming and computation. But few programmers have much experience with logic programming, and fewer still understand its essence. There has never been a more engaging presentation of this material, or a clearer view all the way to the bottom. Like the other Little books, this book is sure to broaden your horizons. And in fact, this one has the broadest horizons yet."
Matt Hellige, Researcher, Accenture Technology Labs

"The Little books are unique in the way they combine deep and subtle ideas with hands-on humorous presentation. The Reasoned Schemer, the latest book in the series, is no exception. Friedman, Byrd, and Kiselyov provide a unique presentation of many of the ideas behind logic programming, which is developed as a natural—though subtle—extension of functional programming. For perfecting your programming skills and style you cannot do better than sit at the feet of Friedman and Kiselyov."
Ehud Lamm, Founder of 'Lambda the Ultimate,' the programming languages weblog


Product Description

The goal of The Reasoned Schemer is to help the functional programmer think logically and the logic programmer think functionally. The authors of The Reasoned Schemer believe that logic programming is a natural extension of functional programming, and they demonstrate this by extending the functional language Scheme with logical constructs—thereby combining the benefits of both styles. The extension encapsulates most of the ideas in the logic programming language Prolog.

The pedagogical method of The Reasoned Schemer is a series of questions and answers, which proceed with the characteristic humor that marked The Little Schemer and The Seasoned Schmer. Familiarity with a functional language or with the first eight chapters of The Little Schemer is assumed. Adding logic capabilities required the introduction of new forms. The authors' goal is to show to what extent writing logic programs is the same as writing functional programs using these forms. In this way, the reader of The Reasoned Schemer will come to understand how simple logic programming is and how easy it is to define functions that behave like relations.

Product Details

  • Paperback: 176 pages
  • Publisher: The MIT Press (July 1, 2005)
  • Language: English
  • ISBN-10: 0262562146
  • ISBN-13: 978-0262562140
  • Product Dimensions: 8.7 x 6.9 x 0.4 inches
  • Shipping Weight: 8 ounces (View shipping rates and policies)
  • Average Customer Review: 4.0 out of 5 stars  See all reviews (5 customer reviews)
  • Amazon.com Sales Rank: #188,734 in Books (See Bestsellers in Books)

More About the Author

Daniel P. Friedman
Discover books, learn about writers, read author blogs, and more.

Visit Amazon's Daniel P. Friedman Page

Inside This Book (learn more)
Browse Sample Pages:
Front Cover | Table of Contents | First Pages | Index | Surprise Me!
Search Inside This Book:

What Do Customers Ultimately Buy After Viewing This Item?

The Reasoned Schemer
43% buy the item featured on this page:
The Reasoned Schemer 4.0 out of 5 stars (5)
$25.20
The Little Schemer - 4th Edition
31% buy
The Little Schemer - 4th Edition 4.0 out of 5 stars (36)
$15.79
The Seasoned Schemer
13% buy
The Seasoned Schemer 4.5 out of 5 stars (4)
$15.22
The Scheme Programming Language, 4th Edition
8% buy
The Scheme Programming Language, 4th Edition 4.8 out of 5 stars (6)
$30.24

Tags Customers Associate with This Product

 (What's this?)
Click on a tag to find related items, discussions, and people.
 
(10)
(4)
(1)

Your tags: Add your first tag
 

Sell a Digital Version of This Book in the Kindle Store

If you are a publisher or author and hold the digital rights to a book, you can sell a digital version of it in our Kindle Store. Learn more

 

Customer Reviews

5 Reviews
5 star:
 (2)
4 star:
 (1)
3 star:
 (2)
2 star:    (0)
1 star:    (0)
 
 
 
 
 
Average Customer Review
4.0 out of 5 stars (5 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most Helpful Customer Reviews

 
36 of 38 people found the following review helpful:
5.0 out of 5 stars Mind-Blowing Book, October 22, 2005
I'm a long-time fan of the "Schemer" series of books and was excited to receive my preordered copy of "The Reasoned Schemer" yesterday- It was supposed to be published in July but must have been held up until now...

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.
[...]
Comment Comment (1) | Permalink | Was this review helpful to you? Yes No (Report this)



 
12 of 12 people found the following review helpful:
5.0 out of 5 stars fascinating and challenging, February 4, 2007
By Michael Vanier (Pasadena, CA) - See all my reviews
(REAL NAME)   
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.
Comment Comment | Permalink | Was this review helpful to you? Yes No (Report this)



 
12 of 14 people found the following review helpful:
3.0 out of 5 stars Better go to the Source, August 1, 2008
I guess this book is OK, but it could really be written in all of about 5 to 10 pages of text with half a page of implementation code - in Haskell.

Main idea: use (potentially) infinite lists to represent (potentially) infinite streams of solutions to a problem. Have "goals" as procedures that work on (partial) solutions, producing new lists (empty/singleton/plural) of (more complete) solutions for each solution processed. Have a mechanism of combining these solutions streams. Now AND is just a sequential combinator and goal applicator; OR is a sequential combinator for parallel application; OR/i (for interleaving) combines its result streams in an interleaving fashion.

It suffices to have these combinators binary, because any type of COND is anyhow broken down to these binary combinations, as in a typical COND rewrite with IFs - and that's what the book itself does too, in a somewhat complex Scheme macro syntax. Expressed in Haskell, the intent is clear and the meaning is immediately obvious:

Sequential stream combination ("mplus" of the book):
(1) [] ++: ys = ys
(2) (x:xs) ++: ys = x:(xs ++: ys)

Alternating stream combination ("mplus/i"):
(3) [] ++/ ys = ys
(4) (x:xs) ++/ ys = x:(ys ++/ xs)

Sequential feed ("bind"):
(5) [] >>: g = []
(6) (x:xs) >>: g = g x ++: (xs >>: g)

Alternating feed ("bind/i"):
(7) [] >>/ g = []
(8) (x:xs) >>/ g = g x ++/ (xs >>/ g)

"OR" goal combination ("cond/e"):
(9) (f ||: g) x = f x ++: g x

"Alternating OR" goal combination ("cond/i"):
(10) (f ||/ g) x = f x ++/ g x

"AND" goal combination ("all"):
(11) (f &&: g) x = f x >>: g

"Alternating AND" goal combination ("all/i" of the book):
(12) (f &&/ g) x = f x >>/ g

That's about all there is to it. If you're unfamiliar with Haskell, it's a type-inferencing, auto-currying LISP with unparenthesised syntax where "f x" stands for functional application, "[]" stands for empty list, "x:xs" for cons cell (x . xs), and parentheses are used for grouping of expressions. It is non-strict, so lazy lists are used throughout, and _everything_ is a delayed lambda, calculated on "as-needed" basis. Having finally produced a stream of solutions, we rely on Haskell to only calculate as much of it as is actually requested by a user (usually one by one, as in Prolog), thus in effect performing depth-first search of a problem space.

It should be clear now that the actual nature of our solutions should be regarded quite apart from the mechanism of producing, combining and managing these infinite streams. Unification can then be viewed as just another "knowledge-enhancing" goal capable of rejecting the solution it's supplied with, by producing an empty list, or updating it, by producing a new list containing an updated solution(s). These solutions can be of any type, whether built-in or user-defined native Haskell type, and not just general symbolic structure capable of representing a kind of symbolic terms Prolog has, which is what's done in the book - where everything is represented through this symbolic structure, even numbers.

Implementing arithmetical relations on top of that is a standard exercise in hopeless inefficiency. The book wants to add logic programming capabilities to the existing Scheme system. Surely we don't have to reinvent numbers for this, and in such an incredibly inefficient way at that!

Instead of reusing blind structural unification of Prolog, the authors could discuss how it can be seen as creating equality constraints, then proceed to implement _them_ thus having truly added the relational capabilities ON TOP of the existing Scheme system, with its numeric functions working for us directly, hopefully.

If this book had THAT, THEN it would have been a great book.

Alas, no. The authors decided instead to stay at a fairly rudimental level, and be very verbose and inexplicit at the same time. And here I come to a point about their whole methodology in this as in their other books of this series, of presenting their material by examples only, making it unnecessarily obscure for a reader. It seems to me they've gone to the other extreme here from the pseudo-scientific type of dry presentation full of abstruse terminology. The golden path, as always, may lie somewhere in the middle - first presenting the material through examples and just playing with it (like they do here), but then proceeding to more precise formulation and discussion of the issues.

This book is long on promise, but short on clarity and depth.
Comment Comment (1) | Permalink | Was this review helpful to you? Yes No (Report this)


Share your thoughts with other customers: Create your own review
 
 
 
Most Recent Customer Reviews

3.0 out of 5 stars Interesthing ideas weird presentation
I must say that I was expecting lesson on building logical system that this book completely lacks fallowed with examples of using it. Read more
Published 5 months ago by Slobodan Blazeski

4.0 out of 5 stars elegant and powerful Prolog
This is a sequel to "The Little Schemer". It goes further into demonstrating why relational programming can be elegant and powerful. Read more
Published on January 4, 2006 by W Boudville

Only search this product's reviews



Customer Discussions

This product's forum
Discussion Replies Latest Post
No discussions yet

Ask questions, Share opinions, Gain insight
Start a new discussion
Topic:
First post:
Prompts for sign-in
 

Search Customer Discussions
Search all Amazon discussions
   




Product Information from the Amapedia Community

Beta (What's this?)


Look for Similar Items by Category


Look for Similar Items by Subject

 

Feedback

If you need help or have a question for Customer Service, contact us.
 Would you like to update product info or give feedback on images?
Is there any other feedback you would like to provide?

Your comments can help make our site better for everyone.


Your Recent History

 (What's this?)

After viewing product detail pages or search results, look here to find an easy way to navigate back to pages you are interested in.