The Reasoned Schemer
Extending the functional language Scheme with logical constructs in order to help the functional programmer think logically and the logic programmer think functionally.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 Schemer. 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.
What people are saying - Write a review
We haven't found any reviews in the usual places.
2 Teaching Old Toys New Tricks
3 Seeing Old Friends in New Ways
4 Members Only
9 other sections not shown
Other editions - View all
a b c adder append associated with q associates the fresh BABA GHANOUSH bit-nand bits Boolean build-num cake with ice conda conde null cons x cons Consider the definition define deflne-syntax empty list empty-s eq-car expression ext-s fagioli fails flatten flattenrev fresh variable fresh y z full-adder function whose value Functional Programming gen&test half-adder hummus i j k ice d t lambda Little Schemer Matthias Felleisen mplus number greater numbers are represented odd number pair pasta peas pizza positive number previous frame q in run recursive reified reify-s run1 q run1 x run5 run6 run8 second conde line split substitution syntax-rules third cond tofu a b tofu tofu d tofu tofu tofu twins unify unwrap value is associated value of mem value of run value of walk virgin x walk*ed values x d res x y r zero