Programming in Haskell:
"Haskell is a purely functional language that allows programmers to rapidly develop clear, concise, and correct software. The language has grown in popularity in recent years, both in teaching and in industry. This book is based on the author's experience of teaching Haskell for more than...
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Cambridge
Cambridge University Press
2016
|
Ausgabe: | Second edition |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Zusammenfassung: | "Haskell is a purely functional language that allows programmers to rapidly develop clear, concise, and correct software. The language has grown in popularity in recent years, both in teaching and in industry. This book is based on the author's experience of teaching Haskell for more than twenty years. All concepts are explained from first principles and no programming experience is required, making this book accessible to a broad spectrum of readers. While Part I focuses on basic concepts, Part II introduces the reader to more advanced topics. This new edition has been extensively updated and expanded to include recent and more advanced features of Haskell, new examples and exercises, selected solutions, and freely downloadable lecture slides and example code. The presentation is clean and simple, while also being fully compliant with the latest version of the language, including recent changes concerning applicative, monadic, foldable, and traversable types"-- |
Beschreibung: | Hier auch später erschienene, unveränderte Nachdrucke |
Beschreibung: | xvi, 304 Seiten |
ISBN: | 9781316626221 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV043744864 | ||
003 | DE-604 | ||
005 | 20240516 | ||
007 | t| | ||
008 | 160831s2016 xxk |||| 00||| eng d | ||
020 | |a 9781316626221 |c Paperback |9 978-1-316-62622-1 | ||
035 | |a (OCoLC)958178643 | ||
035 | |a (DE-599)BVBBV043744864 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
044 | |a xxk |c GB | ||
049 | |a DE-11 |a DE-91G |a DE-703 |a DE-20 |a DE-Aug4 |a DE-473 |a DE-19 |a DE-92 |a DE-739 |a DE-573 |a DE-1050 | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
084 | |a DAT 362f |2 stub | ||
100 | 1 | |a Hutton, Graham |d 1968- |e Verfasser |0 (DE-588)1127588745 |4 aut | |
245 | 1 | 0 | |a Programming in Haskell |c Graham Hutton, University of Nottingham |
250 | |a Second edition | ||
264 | 1 | |a Cambridge |b Cambridge University Press |c 2016 | |
300 | |a xvi, 304 Seiten | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
500 | |a Hier auch später erschienene, unveränderte Nachdrucke | ||
520 | |a "Haskell is a purely functional language that allows programmers to rapidly develop clear, concise, and correct software. The language has grown in popularity in recent years, both in teaching and in industry. This book is based on the author's experience of teaching Haskell for more than twenty years. All concepts are explained from first principles and no programming experience is required, making this book accessible to a broad spectrum of readers. While Part I focuses on basic concepts, Part II introduces the reader to more advanced topics. This new edition has been extensively updated and expanded to include recent and more advanced features of Haskell, new examples and exercises, selected solutions, and freely downloadable lecture slides and example code. The presentation is clean and simple, while also being fully compliant with the latest version of the language, including recent changes concerning applicative, monadic, foldable, and traversable types"-- | ||
650 | 4 | |a Haskell (Computer program language) | |
650 | 7 | |a Haskell (Computer program language) |2 blmsh | |
650 | 4 | |a Haskell (Computer program language) | |
650 | 4 | |a Functional programming (Computer science) | |
650 | 0 | 7 | |a Haskell 98 |0 (DE-588)4742681-0 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a HASKELL |0 (DE-588)4318275-6 |2 gnd |9 rswk-swf |
653 | |a Electronic books | ||
655 | 7 | |0 (DE-588)4151278-9 |a Einführung |2 gnd-content | |
689 | 0 | 0 | |a HASKELL |0 (DE-588)4318275-6 |D s |
689 | 0 | |5 DE-604 | |
689 | 1 | 0 | |a Haskell 98 |0 (DE-588)4742681-0 |D s |
689 | 1 | |8 1\p |5 DE-604 | |
856 | 4 | 2 | |m Digitalisierung UB Bamberg - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029156517&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
883 | 1 | |8 1\p |a cgwrk |d 20201028 |q DE-101 |u https://d-nb.info/provenance/plan#cgwrk | |
943 | 1 | |a oai:aleph.bib-bvb.de:BVB01-029156517 |
Datensatz im Suchindex
_version_ | 1822120212031340544 |
---|---|
adam_text |
Contents
Foreword page xiii
Preface XV
Part 1 Basic Concepts 1
1 Introduction 3
1.1 Functions 3
1.2 Functional programming 4
1.3 Features of Haskell 6
1.4 Historical background 8
1.5 A taste of Haskell 9
1.6 Chapter remarks 13
1.7 Exercises 13
2 First steps 14
2.1 Glasgow Haskell Compiler 14
2.2 Installing and starting 14
2.3 Standard prelude 15
2.4 Function application 16
2.5 Haskell scripts 17
2.6 Chapter remarks 21
2.7 Exercises 21
3 Types and classes 22
3.1 Basic concepts 22
3.2 Basic types 23
3.3 List types 25
3.4 Tuple types 26
3.5 Function types 27
3.6 Curried functions 27
3.7 Polymorphic types 29
3.8 Overloaded types 30
3.9 Basic classes 31
3.10 Chapter remarks 36
viii Contents
3.11 Exercises 36
Defining functions 38
4.1 New from old 38
4.2 Conditional expressions 38
4.3 Guarded equations 39
4.4 Pattern matching 40
4.5 Lambda expressions 42
4.6 Operator sections 44
4.7 Chapter remarks 45
4.8 Exercises 45
List comprehensions 47
5.1 Basic concepts 47
5.2 Guards 48
5.3 The zip function 50
5.4 String comprehensions 51
5.5 The Caesar cipher 52
5.6 Chapter remarks 56
5.7 Exercises 57
Recursive functions 59
6.1 Basic concepts 59
6.2 Recursion on lists 61
6.3 Multiple arguments 63
6.4 Multiple recursion 64
6.5 Mutual recursion 65
6.6 Advice on recursion 66
6.7 Chapter remarks 71
6.8 Exercises 71
Higher-order functions 73
7.1 Basic concepts 73
7.2 Processing lists 74
7.3 The f oldr function 76
7.4 The foldl function 79
7.5 The composition operator 81
7.6 Binary string transmitter 82
7.7 Voting algorithms 86
7.8 Chapter remarks 89
7.9 Exercises 89
8
Declaring types and classes
8.1 Type declarations
92
92
Contents
IX
9
Part II
10
11
8.2 Data declarations 93
8.3 Newtype declarations 95
8.4 Recursive types 96
8.5 Class and instance declarations 99
8.6 Tautology checker 101
8.7 Abstract machine 106
8.8 Chapter remarks 108
8.9 Exercises 109
The countdown problem 111
9.1 Introduction 111
9.2 Arithmetic operators 112
9.3 Numeric expressions 113
9.4 Combinatorial functions 114
9.5 Formalising the problem 115
9.6 Brute force solution 115
9.7 Performance testing 116
9.8 Combining generation and evaluation 117
9.9 Exploiting algebraic properties 118
9.10 Chapter remarks 119
9.11 Exercises 120
Going Further 121
Interactive programming 123
10.1 The problem 123
10.2 The solution 124
10.3 Basic actions 125
10.4 Sequencing 126
10.5 Derived primitives 127
10.6 Hangman 128
10.7 Nim 129
10.8 Life 133
10.9 Chapter remarks 137
10.10 Exercises 137
Unbeatable tic-tac-toe 139
11.1 Introduction 139
11.2 Basic declarations 140
11.3 Grid utilities 141
11.4 Displaying a grid 142
11.5 Making a move 143
11.6 Reading a number 144
11.7 Human vs human 144
x Contents
11.8 Game trees 145
11.9 Pruning the tree 147
11.10 Minimax algorithm 148
11.11 Human vs computer 150
11.12 Chapter remarks 151
11.13 Exercises 151
12 Monads and more 153
12.1 Functors 153
12.2 Applicatives 157
12.3 Monads 164
12.4 Chapter remarks 174
12.5 Exercises 175
13 Monadic parsing 177
13.1 What is a parser? 177
13.2 Parsers as functions 177
13.3 Basic definitions 179
13.4 Sequencing parsers 179
13.5 Making choices 131
13.6 Derived primitives 183
13.7 Handling spacing 186
13.8 Arithmetic expressions 187
13.9 Calculator 191
13.10 Chapter remarks 194
13.11 Exercises 194
14 Foidabies and friends 196
14.1 Monoids 196
14.2 Foidabies 200
14.3 Traversables 206
14.4 Chapter remarks 210
14.5 Exercises 210
15 Lazy evaluation 212
15.1 Introduction 212
15.2 Evaluation strategies 213
15.3 Termination 216
15.4 Number of reductions 217
15.5 Infinite structures 219
15.6 Modular programming 220
15.7 Strict application 223
15.8 Chapter remarks 226
15.9 Exercises 226
Contents
XI
16 Reasoning about programs 228
16.1 Equational reasoning 228
16.2 Reasoning about Haskell 229
16.3 Simple examples 230
16.4 Induction on numbers 231
16.5 Induction on lists 234
16.6 Making append vanish 238
16.7 Compiler correctness 241
16.8 Chapter remarks 246
16.9 Exercises 246
17 Calculating compilers 249
17.1 Introduction 249
17.2 Syntax and semantics 249
17.3 Adding a stack 250
17.4 Adding a continuation 252
17.5 Defunctionalising 254
17.6 Combining the steps 257
17.7 Chapter remarks 261
17.8 Exercises 261
Appendix A Selected solutions 263
A.l Introduction 263
A.2 First steps 264
A.3 Types and classes 265
A.4 Defining functions 266
A.5 List comprehensions 267
A.6 Recursive functions 267
A.7 Higher-order functions 268
A.8 Declaring types and classes 269
A.9 The countdown problem 270
A. 10 Interactive programming 270
A. 11 Unbeatable tic-tac-toe 271
A.12 Monads and more 272
A. 13 Monadic parsing 273
A. 14 Foldables and friends 274
A. 15 Lazy evaluation 275
A. 16 Reasoning about programs 276
A. 17 Calculating compilers 279
Appendix В Standard prelude 280
B. l Basic classes 280
B.2 Booleans 281
B.3 Characters 282
XII
Contents
B.4 Strings 283
B.5 Numbers 283
B.6 Tuples 284
B.7 Maybe 284
B.8 Lists 285
B.9 Functions 287
B.10 Input/output 287
B.11 Functors 288
B.12 Applicatives 289
B.13 Monads 290
B.14 Alternatives 290
B.15 MonadPlus 291
B.16 Monoids 292
B.17 Foldables 294
B.18 Traversables 297
Bibliography 298
Index 300 |
any_adam_object | 1 |
author | Hutton, Graham 1968- |
author_GND | (DE-588)1127588745 |
author_facet | Hutton, Graham 1968- |
author_role | aut |
author_sort | Hutton, Graham 1968- |
author_variant | g h gh |
building | Verbundindex |
bvnumber | BV043744864 |
classification_rvk | ST 250 |
classification_tum | DAT 362f |
ctrlnum | (OCoLC)958178643 (DE-599)BVBBV043744864 |
discipline | Informatik |
edition | Second edition |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a2200000 c 4500</leader><controlfield tag="001">BV043744864</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20240516</controlfield><controlfield tag="007">t|</controlfield><controlfield tag="008">160831s2016 xxk |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781316626221</subfield><subfield code="c">Paperback</subfield><subfield code="9">978-1-316-62622-1</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)958178643</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV043744864</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">xxk</subfield><subfield code="c">GB</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-11</subfield><subfield code="a">DE-91G</subfield><subfield code="a">DE-703</subfield><subfield code="a">DE-20</subfield><subfield code="a">DE-Aug4</subfield><subfield code="a">DE-473</subfield><subfield code="a">DE-19</subfield><subfield code="a">DE-92</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-1050</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 362f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Hutton, Graham</subfield><subfield code="d">1968-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1127588745</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Programming in Haskell</subfield><subfield code="c">Graham Hutton, University of Nottingham</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">Second edition</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Cambridge</subfield><subfield code="b">Cambridge University Press</subfield><subfield code="c">2016</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">xvi, 304 Seiten</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">Hier auch später erschienene, unveränderte Nachdrucke</subfield></datafield><datafield tag="520" ind1=" " ind2=" "><subfield code="a">"Haskell is a purely functional language that allows programmers to rapidly develop clear, concise, and correct software. The language has grown in popularity in recent years, both in teaching and in industry. This book is based on the author's experience of teaching Haskell for more than twenty years. All concepts are explained from first principles and no programming experience is required, making this book accessible to a broad spectrum of readers. While Part I focuses on basic concepts, Part II introduces the reader to more advanced topics. This new edition has been extensively updated and expanded to include recent and more advanced features of Haskell, new examples and exercises, selected solutions, and freely downloadable lecture slides and example code. The presentation is clean and simple, while also being fully compliant with the latest version of the language, including recent changes concerning applicative, monadic, foldable, and traversable types"--</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Haskell (Computer program language)</subfield></datafield><datafield tag="650" ind1=" " ind2="7"><subfield code="a">Haskell (Computer program language)</subfield><subfield code="2">blmsh</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Haskell (Computer program language)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Functional programming (Computer science)</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Haskell 98</subfield><subfield code="0">(DE-588)4742681-0</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">HASKELL</subfield><subfield code="0">(DE-588)4318275-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Electronic books</subfield></datafield><datafield tag="655" ind1=" " ind2="7"><subfield code="0">(DE-588)4151278-9</subfield><subfield code="a">Einführung</subfield><subfield code="2">gnd-content</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">HASKELL</subfield><subfield code="0">(DE-588)4318275-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Haskell 98</subfield><subfield code="0">(DE-588)4742681-0</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Bamberg - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029156517&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="a">cgwrk</subfield><subfield code="d">20201028</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#cgwrk</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-029156517</subfield></datafield></record></collection> |
genre | (DE-588)4151278-9 Einführung gnd-content |
genre_facet | Einführung |
id | DE-604.BV043744864 |
illustrated | Not Illustrated |
indexdate | 2025-01-24T09:00:47Z |
institution | BVB |
isbn | 9781316626221 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-029156517 |
oclc_num | 958178643 |
open_access_boolean | |
owner | DE-11 DE-91G DE-BY-TUM DE-703 DE-20 DE-Aug4 DE-473 DE-BY-UBG DE-19 DE-BY-UBM DE-92 DE-739 DE-573 DE-1050 |
owner_facet | DE-11 DE-91G DE-BY-TUM DE-703 DE-20 DE-Aug4 DE-473 DE-BY-UBG DE-19 DE-BY-UBM DE-92 DE-739 DE-573 DE-1050 |
physical | xvi, 304 Seiten |
publishDate | 2016 |
publishDateSearch | 2016 |
publishDateSort | 2016 |
publisher | Cambridge University Press |
record_format | marc |
spelling | Hutton, Graham 1968- Verfasser (DE-588)1127588745 aut Programming in Haskell Graham Hutton, University of Nottingham Second edition Cambridge Cambridge University Press 2016 xvi, 304 Seiten txt rdacontent n rdamedia nc rdacarrier Hier auch später erschienene, unveränderte Nachdrucke "Haskell is a purely functional language that allows programmers to rapidly develop clear, concise, and correct software. The language has grown in popularity in recent years, both in teaching and in industry. This book is based on the author's experience of teaching Haskell for more than twenty years. All concepts are explained from first principles and no programming experience is required, making this book accessible to a broad spectrum of readers. While Part I focuses on basic concepts, Part II introduces the reader to more advanced topics. This new edition has been extensively updated and expanded to include recent and more advanced features of Haskell, new examples and exercises, selected solutions, and freely downloadable lecture slides and example code. The presentation is clean and simple, while also being fully compliant with the latest version of the language, including recent changes concerning applicative, monadic, foldable, and traversable types"-- Haskell (Computer program language) Haskell (Computer program language) blmsh Functional programming (Computer science) Haskell 98 (DE-588)4742681-0 gnd rswk-swf HASKELL (DE-588)4318275-6 gnd rswk-swf Electronic books (DE-588)4151278-9 Einführung gnd-content HASKELL (DE-588)4318275-6 s DE-604 Haskell 98 (DE-588)4742681-0 s 1\p DE-604 Digitalisierung UB Bamberg - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029156517&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis 1\p cgwrk 20201028 DE-101 https://d-nb.info/provenance/plan#cgwrk |
spellingShingle | Hutton, Graham 1968- Programming in Haskell Haskell (Computer program language) Haskell (Computer program language) blmsh Functional programming (Computer science) Haskell 98 (DE-588)4742681-0 gnd HASKELL (DE-588)4318275-6 gnd |
subject_GND | (DE-588)4742681-0 (DE-588)4318275-6 (DE-588)4151278-9 |
title | Programming in Haskell |
title_auth | Programming in Haskell |
title_exact_search | Programming in Haskell |
title_full | Programming in Haskell Graham Hutton, University of Nottingham |
title_fullStr | Programming in Haskell Graham Hutton, University of Nottingham |
title_full_unstemmed | Programming in Haskell Graham Hutton, University of Nottingham |
title_short | Programming in Haskell |
title_sort | programming in haskell |
topic | Haskell (Computer program language) Haskell (Computer program language) blmsh Functional programming (Computer science) Haskell 98 (DE-588)4742681-0 gnd HASKELL (DE-588)4318275-6 gnd |
topic_facet | Haskell (Computer program language) Functional programming (Computer science) Haskell 98 HASKELL Einführung |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029156517&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT huttongraham programminginhaskell |