+612 9045 4394
 
CHECKOUT
Introduction to Functional Programming Systems Using Haskell : Cambridge Computer Science Texts - Antony J. T. Davie

Introduction to Functional Programming Systems Using Haskell

Cambridge Computer Science Texts

Paperback

Published: 17th August 1992
RRP $72.95
$71.95
This title is not in stock at the Booktopia Warehouse and needs to be ordered from our supplier.
Click here to read more about delivery expectations.

Functional programming, is a style of programming that has become increasingly popular during the past few years. Applicative programs have the advantage of being almost immediately expressible as functional descriptions; they can be proved correct and transformed through the referential transparency property. This book presents the basic concepts of functional programming, using the language HASKELL for examples. The author incorporates a discussion of lambda calculus and its relationship with HASKELL, exploring the implications for parallelism.

"...a very readable and understandable introduction to functional programming. It provides many concrete programming examples written in Haskell and discusses several design principles that seem to be unique to functional programming. I would recommend this book to all professional software developers for its discussion of software design using higher-order functions and streams. The book is perfect for an undergraduate course on functional programming. Haskell compilers are available from the research community, so students can get hands-on experience. Graduate students should be able to read this book on their own for an introduction to functional programming, the lambda calculus, polymorphic types, and combinatory logic." Reginald Meeson, ACM SIGPLAN Notices

Prefacep. xiii
Introductionp. 1
The Von Neumann Bottleneckp. 1
Von Neumann Languagesp. 2
Parallelismp. 3
Mathematics -- A Static Languagep. 4
The Complexity of Programming Languagesp. 4
Referential Transparencyp. 5
Higher Order Functionsp. 6
[lambda]-Calculusp. 7
Implementation of Functional Languagesp. 8
Areas of Applicationp. 8
Summaryp. 9
Introduction to Functional Programsp. 11
Getting Startedp. 11
Namesp. 13
Functionsp. 14
Scopep. 15
Definition by Casesp. 18
Algorithmsp. 18
Data Typesp. 19
Guardsp. 21
Charactersp. 22
Listsp. 23
Constructing Listsp. 24
Selectionp. 25
Pattern Matchingp. 26
Tuplesp. 27
Showp. 28
Conditionalsp. 28
Modules and the Interactive Environmentp. 30
Miscellaneous Pointsp. 31
Commentsp. 31
Identifiers and Operatorsp. 31
Layoutp. 31
A few useful predeclared functionsp. 32
Summaryp. 32
Exercisesp. 32
Techniques and Methodsp. 35
Introductionp. 35
Recursive Functionsp. 35
Completenessp. 37
Higher Order Functionsp. 39
Syntax of Function Definitionsp. 40
Simulation of a Stackp. 41
Modelling Conventional Programmingp. 44
Non-Local Variablesp. 45
Accumulating Resultsp. 46
Mapsp. 48
Mapsp. 48
Filtersp. 49
Foldsp. 51
List Comprehensionsp. 52
Translation to simpler Haskellp. 54
Summaryp. 55
Exercisesp. 55
Typesp. 59
Introductionp. 59
Type Operatorsp. 60
Polymorphic Typesp. 61
New Type Namesp. 62
Algebraic Typesp. 62
Pattern Matchingp. 65
Abstract Typesp. 66
Arraysp. 67
Type Inferencep. 68
Overloadingp. 70
Lawsp. 73
Summaryp. 75
Exercisesp. 76
Lambda Calculusp. 79
Introductionp. 79
Abstractionp. 79
Reductionp. 81
[lambda]-Expressionsp. 82
The Dangers of Substitutionp. 83
Model of a Test for Freedomp. 85
Conversionp. 87
Normal Formsp. 90
Order of Reductionp. 92
Converting Haskell to [lambda]-Expressionsp. 95
Expressions with definitionsp. 96
Definitions within definitionsp. 97
Simultaneous definitions and patternsp. 97
Recursionp. 99
Constructed Valuesp. 103
Patternsp. 103
Overloadingp. 104
Summaryp. 105
Exercisesp. 106
Applicative Implementationp. 109
Introductionp. 109
The Secd Machinep. 109
Representationp. 112
Operational Semanticsp. 114
An Improved Secd Machinep. 122
Secd2 Machine Codep. 123
Dropping Stitchesp. 128
Further Improvementsp. 128
Summaryp. 128
Exercisesp. 129
Lazy Evaluationp. 131
Introductionp. 131
Infinite Objectsp. 132
Streamsp. 135
Stream diagramsp. 136
List Comprehensionsp. 139
Diagonalisationp. 139
Input/outputp. 140
Irrefutable Patternsp. 144
Modularityp. 144
Memo Functionsp. 146
Summaryp. 147
Exercisesp. 147
Implementation of Lazy Evaluationp. 149
Introductionp. 149
Lazy Evaluationp. 150
Adapting the Secd Machinep. 151
Graph Reductionp. 152
Turner's Combinator Machinep. 153
Combinatorsp. 154
Translation of Haskell to Combinatorsp. 154
Interpretingp. 158
Book-keepingp. 161
The G-Machinep. 162
Transformation to Super-Combinatorsp. 163
Programs for the G-Machinep. 164
Strictness Analysisp. 168
Further Developmentsp. 170
Summaryp. 170
Exercisesp. 170
Correctnessp. 173
Introductionp. 173
Mathematical Inductionp. 174
Induction on Listsp. 177
Structural Inductionp. 178
Induction on Functionsp. 180
Approximationp. 180
Chains of Approximationsp. 182
Fixed Point Inductionp. 184
Practical Use of Fixed Point Inductionp. 185
Summaryp. 187
Exercisesp. 187
Applicative Program Transformationp. 189
Introductionp. 189
Language Definitionp. 189
Transformations in Compilersp. 192
Dependency Analysisp. 192
Transforming Pattern Matchingp. 194
Systematic Transformationp. 195
Other Transformationsp. 198
Summaryp. 198
Exercisesp. 198
Parallel Evaluationp. 201
Introductionp. 201
Eager Evaluationp. 201
Sparking New Tasksp. 203
States of Evaluationp. 203
Pools of Tasksp. 204
Parallel Projectsp. 204
Alicep. 204
Gripp. 205
The [v-G] Machinep. 205
Monsoonp. 205
P-RISCp. 205
Other Projectsp. 206
Star:Dustp. 206
Requirementsp. 206
Machine Architecturep. 207
Star:Dust as a Parallel Processorp. 207
Executing Sub-tasks in Parallelp. 209
Evaluating Suspensionsp. 211
Load Distributionp. 211
Summaryp. 211
Bibliographyp. 213
Predefined Haskell Operatorsp. 227
The Haskell Preludesp. 229
Preludep. 230
PreludeBuiltinp. 233
PreludeCorep. 235
PreludeRatiop. 242
PreludeComplexp. 243
PreludeListp. 245
PreludeArrayp. 251
PreludeTextp. 253
PreludeIOp. 258
Haskell Syntaxp. 263
Notational Conventionsp. 263
Lexical Syntaxp. 264
Layoutp. 266
Context-Free Syntaxp. 267
Interface Syntaxp. 271
Haskell Class Structurep. 273
Indexp. 275
Table of Contents provided by Syndetics. All Rights Reserved.

ISBN: 9780521277242
ISBN-10: 0521277248
Series: Cambridge Computer Science Texts
Audience: Tertiary; University or College
Format: Paperback
Language: English
Number Of Pages: 304
Published: 17th August 1992
Publisher: Cambridge University Press
Country of Publication: GB
Dimensions (cm): 23.5 x 15.88  x 1.91
Weight (kg): 0.43