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
9
About Monads
9.1
Monadic Classes
9.2
Built-in Monads
9.3
Using Monads
10
Numbers
10.1
Numeric Class Structure
10.2
Constructed Numbers
10.3
Numeric Coercions and Overloaded Literals
10.4
Default Numeric Types
11
Modules
11.1
Qualified Names
11.2
Abstract Data Types
11.3
More Features
12
Typing Pitfalls
12.1
Let-Bound Polymorphism
12.2
Numeric Overloading
12.3
The Monomorphism Restriction
13
Arrays
13.1
Index types
13.2
Array Creation
13.3
Accumulation
13.4
Incremental updates
13.5
An example: Matrix Multiplication
14
The Next Stage
15
Acknowledgements