1300 187 187
 

Programming in Haskell

Paperback

Published: 18th January 2007
Ships: 5 to 9 business days
RRP $63.95
$58.50

Haskell is one of the leading languages for teaching functional programming, enabling students to write simpler and cleaner code, and to learn how to structure and reason about programs. This introduction is ideal for beginners: it requires no previous programming experience and all concepts are explained from first principles via carefully chosen examples. Each chapter includes exercises that range from the straightforward to extended projects, plus suggestions for further reading on more advanced topics. The author is a leading Haskell researcher and instructor, well-known for his teaching skills. The presentation is clear and simple, and benefits from having been refined and class-tested over several years. The result is a text that can be used with courses, or for self-learning. Features include freely accessible Powerpoint slides for each chapter, solutions to exercises and examination questions (with solutions) available to instructors, and a downloadable code that's fully compliant with the latest Haskell release.

'The best introduction to Haskell available. There are many paths towards becoming comfortable and competent with the language but I think studying this book is the quickest path. I urge readers of this magazine to recommend Programming in Haskell to anyone who has been thinking about learning the language.' Duncan Coutts, Monad Reader 'Two groups of people must consider this book. The first is professors interested in rapidly introducing students to fundamental concepts in functional programming. This book, supplemented with online resources and professorial guidance could easily serve as the textbook for a semester-long course on functional programming. The second group is programmers interested in surveying the functional paradigm as quickly as possible.' Journal of Functional Programming

Prefacep. xi
Introductionp. 1
Functionsp. 1
Functional programmingp. 2
Features of Haskellp. 4
Historical backgroundp. 6
A taste of Haskellp. 6
Chapter remarksp. 9
Exercisesp. 9
First stepsp. 10
The Hugs systemp. 10
The standard preludep. 10
Function applicationp. 12
Haskell scriptsp. 13
Chapter remarksp. 16
Exercisesp. 16
Types and classesp. 17
Basic conceptsp. 17
Basic typesp. 18
List typesp. 20
Tuple typesp. 20
Function typesp. 21
Curried functionsp. 21
Polymorphic typesp. 23
Overloaded typesp. 23
Basic classesp. 24
Chapter remarksp. 28
Exercisesp. 28
Defining functionsp. 30
New from oldp. 30
Conditional expressionsp. 31
Guarded equationsp. 31
Pattern matchingp. 32
Lambda expressionsp. 34
Sectionsp. 36
Chapter remarksp. 36
Exercisesp. 37
List comprehensionsp. 38
Generatorsp. 38
Guardsp. 39
The zip functionp. 40
String comprehensionsp. 41
The Caesar cipherp. 42
Chapter remarksp. 46
Exercisesp. 46
Recursive functionsp. 48
Basic conceptsp. 48
Recursion on listsp. 49
Multiple argumentsp. 52
Multiple recursionp. 53
Mutual recursionp. 53
Advice on recursionp. 55
Chapter remarksp. 59
Exercisesp. 59
Higher-order functionsp. 61
Basic conceptsp. 61
Processing listsp. 62
The foldr functionp. 64
The foldl functionp. 66
The composition operatorp. 68
String transmitterp. 69
Chapter remarksp. 72
Exercisesp. 72
Functional parsersp. 74
Parsersp. 74
The parser typep. 75
Basic parsersp. 75
Sequencingp. 76
Choicep. 78
Derived primitivesp. 78
Handling spacingp. 81
Arithmetic expressionsp. 82
Chapter remarksp. 85
Exercisesp. 85
Interactive programsp. 87
Interactionp. 87
The input/output typep. 88
Basic actionsp. 88
Sequencingp. 89
Derived primitivesp. 90
Calculatorp. 91
Game of lifep. 94
Chapter remarksp. 97
Exercisesp. 97
Declaring types and classesp. 99
Type declarationsp. 99
Data declarationsp. 100
Recursive typesp. 102
Tautology checkerp. 105
Abstract machinep. 109
Class and instance declarationsp. 111
Chapter remarksp. 114
Exercisesp. 114
The countdown problemp. 116
Introductionp. 116
Formalising the problemp. 117
Brute force solutionp. 119
Combining generation and evaluationp. 120
Exploiting algebraic propertiesp. 121
Chapter remarksp. 123
Exercisesp. 123
Lazy evaluationp. 124
Introductionp. 124
Evaluation strategiesp. 125
Terminationp. 128
Number of reductionsp. 129
Infinite structuresp. 130
Modular programmingp. 132
Strict applicationp. 134
Chapter remarksp. 137
Exercisesp. 137
Reasoning about programsp. 139
Equational reasoningp. 139
Reasoning about Haskellp. 140
Simple examplesp. 141
Induction on numbersp. 142
Induction on listsp. 145
Making append vanishp. 146
Compiler correctnessp. 150
Chapter remarksp. 154
Exercisesp. 154
Standard preludep. 156
Classesp. 156
Logical valuesp. 157
Characters and stringsp. 158
Numbersp. 159
Tuplesp. 160
Maybep. 160
Listsp. 160
Functionsp. 164
Input/outputp. 164
Symbol tablep. 166
Bibliographyp. 167
Indexp. 169
Table of Contents provided by Ingram. All Rights Reserved.

ISBN: 9780521692694
ISBN-10: 0521692695
Audience: Professional
Format: Paperback
Language: English
Number Of Pages: 183
Published: 18th January 2007
Dimensions (cm): 24.7 x 19.0  x 1.0
Weight (kg): 0.358