The Haskell Road to Logic, Maths and Programming (Texts in Computing, Vol. 4) Paperback – 7 Dec 2012
- Choose from over 13,000 locations across the UK
- Prime members get unlimited deliveries at no additional cost
- Find your preferred location and add it to your address book
- Dispatch to this address when you check out
Frequently Bought Together
Customers Who Bought This Item Also Bought
Enter your mobile number below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
Getting the download link through email is temporarily not available. Please check back later.
To get the free app, enter your mobile phone number.
What Other Items Do Customers Buy After Viewing This Item?
Top Customer Reviews
What it is not: HR is not one of those vast towers of paper that introductory computer science books seem to have become. The kind of book that's called "Discrete Mathematics" and essentially contains all the stuff that nobody wants to teach but everyone wants you to know. Those books and the courses they support are often a student's first introduction to thinking about computing, and it's shameful. They are a patchwork of misaligned topics - and the students' thinking begins to resemble them, unsurprisingly.
Rather, the Haskell road is elegant - clean, concise, yet informal and approachable. Like the title says, it is an introduction to Logic, Maths and Programming. The book takes the enlightened viewpoint that these are unified concepts. The book begins by introducing basic Haskell syntax, and all of a sudden, we are implementing a prime number test. Simple; yes, but we also learn how to _prove_ that a procedure is a prime number test.
This approach continues throughout the book. The ideas of formal logic and deductive reasoning are made approachable by the fact that we implement the rules in Haskell. Sometimes, the exercise is in Haskell, and the answer is in logic. The point is that the reader is made from the first instant to see the equivalence, the shared foundations between these different means of expressing thought.
This is also one of the few books that teaches, explicitly, the means of proof. It does not do so abstractly, but quite straightforwardly, using the tools of formal logic. A few somewhat difficult chapters are the result (2-4); but they are greatly enlightened by enjoyable exercises.Read more ›
This book is well named -- it aims to teach the three disciplines of its title in equal measure and learning Haskell is presented as the channel for that, rather than being a goal in itself.
Most Helpful Customer Reviews on Amazon.com (beta)
While the book is easy to read and has a friendly writing style, it not particularly well suited to casual reading. To really understand the subject being discussed the reader will probably need to solve most of the exercises in the text. The good news is this requires minimal prior mathematical training (the authors expect familiarity with "secondary school mathematics"). Solving the exercises will also train the reader in writing, and proving the correctness of, short functional programs.
The book has a minor few faults. One is a relatively large number of minor errors (many of which are noted in the errata available on the book's website). Another is that some major topics are introduced in exercises without much discussion, particularly in the later chapters. But these are but quibbles in a review of a fantastic math book for programmers.
This is not meant to be a negative review! Instead, it is a warning to those with minimal programming/Mathematics background expecting to learn Haskell. Personally, I loved this book and wish I came across it years ago. In fact, I wish I had come across functional programming years ago and therefore had not wasted years trying abstract other less abstract-able languages.
Haskell is prominent in the title, but is secondary in the book. The vast majority of my time has been spent reading and performing proofs with with pencil and paper. The mathematics portions are all fairly rigorous. Once proofs are fully introduced, nearly all the exercises are proving theorems given in the book, or providing counter examples. There isn't much in the way of computational type exercises I've seen in some other discrete math texts, stuff like "what's the transitive closure of this relation". Instead, a theorem will be given and the author will ask you to prove it.
The Haskell exercises typically follow pure math introductions and exercises, and are used to help develop a stronger, more intuitive understating of the subjects. I can now write enough Haskell to take on the exercises, but to this point, the Haskell has all be very compact - 10 lines of code to answer a question at the max, usually more like 3. There's no way I could go and do something 'practical' with Haskell at this point, but I can grok some of it and am starting to appreciate functional programming.
This is easily the most challenging self study book I've taken on, but also the most rewarding. Not only have I gained proof writing knowledge, and a solid understanding of the fundamentals of modern mathematics, but it's helped me develop a measure of discipline in thought. I've noticed improvements in the clarity of my day to day software development - in design, development, and verification. The methodical approach to breaking down a proof into cases and sub-cases has been most helpful in that regard.
I recommend this to anyone, especially developers who haven't had the benefit of a thorough mathematical education.
This textbook covers this material in a constructive fashion by using the Haskell programming language. Haskell is a modern form of lisp, one of the original programming languages, from the '50's, the language used for most Artificial Intelligence work. The breadth of Haskell allows it to be used for logic and proof, as well as the usual numerical and string processing. Pattern matching and list processing is built into the basic structure of the Haskell language.
This text's exercises are mostly Haskell programming assignments. Turning the abstract ideas of the math into the concrete statements of Haskell (if statements in a program can be considered concrete) will make the ideas familiar and real. Free, useful versions of Haskell (Hugs) are available for readers or students to use, even on Windows systems. Any familiarity with any programming system and a text editor should be enough to get started.
What is the difference between proving a theorem and debugging a program ? The way I do it, not much. That has much to do with me, I am a programmer first, and a Math second. This statement is the Curry-Howard correspondence, connecting computability and proof or truth. This text is a step on that road to truth.
There are several other titles in this series. All of them sound fascinating. I will read them later.