Gentle Intro: Index
1
Introduction
2
Values, Types, and Other Goodies
2.1
Polymorphic Types
2.2
User-Defined Types
2.2.1
Recursive Types
2.3
Type Synonyms
2.4
Built-in Types Are Not Special
2.4.1
List Comprehensions and Arithmetic Sequences
2.4.2
Strings
3
Functions
3.1
Lambda Abstractions
3.2
Infix Operators
3.2.1
Sections
3.2.2
Fixity Declarations
3.3
Functions are Non-strict
3.4
"Infinite" Data Structures
3.5
The Error Function
4
Case Expressions and Pattern Matching
4.1
Pattern-Matching Semantics
4.2
An Example
4.3
Case Expressions
4.4
Lazy Patterns
4.5
Lexical Scoping and Nested Forms
4.6
Layout
5
Type Classes and Overloading
6
Types, Again
6.1
The Newtype Declaration
6.2
Field Labels
6.3
Strict Data Constructors
7
Input/Output
7.1
Basic I/O Operations
7.2
Programming With Actions
7.3
Exception Handling
7.4
Files, Channels, and Handles
7.5
Haskell and Imperative Programming
8
Standard Haskell Classes
8.1
Equality and Ordered Classes
8.2
The Enumeration Class
8.3
The Read and Show Classes
8.4
Derived Instances
8.5
Monadic Classes
9
Modules
9.1
Qualified Names
9.2
Abstract Data Types
9.3
More Features
10
Typing Pitfalls
10.1
Let-Bound Polymorphism
10.2
Numeric Overloading
10.3
The Monomorphism Restriction
11
Arrays
11.1
Index types
11.2
Array Creation
11.3
Accumulation
11.4
Incremental updates
11.5
An example: Matrix Multiplication
12
The Next Stage
13
Acknowledgements