Haskell/New contents

From Wikibooks, open books for an open world
< Haskell
Jump to: navigation, search


Beginner's Track[edit]

This section will introduce you to the very basics of the language and some of most frequently used libraries. This will enable you to build simple programs and prepare you for the advanced track.

Haskell Basics[edit]

Getting set up
Variables and functions
Truth values
Type basics
Lists and tuples
Type basics II
Next steps
Building vocabulary
Simple input and output


Elementary Haskell[edit]

Recursion
More about lists
Folds, Scans, & Comprehension
Type declarations
Pattern matching
Control structures
More on functions
Higher order functions
Using GHCi effectively


Intermediate Haskell[edit]

Modules
Standalone programs
Indentation
More on datatypes
Other data structures
Classes and types
The Functor class


Monads[edit]

Understanding monads


Maybe
List
do Notation
IO
State

Additive monads (MonadPlus)
Monad transformers


Advanced Track[edit]

This section will introduce wider functional programming concepts such as different data structures and type theory. It will also cover more practical topics like concurrency.

Advanced Haskell[edit]

Monoids 50% developed
Applicative Functors 50% developed
Arrow tutorial
Understanding arrows
Continuation passing style (CPS)
Value recursion (MonadFix)
Zippers 75% developed
Mutable objects 0% developed
Concurrency 0% developed
Template Haskell 0% developed


Program correctness[edit]

Denotational semantics 75% developed
Equational reasoning
Program derivation
Category theory
The Curry-Howard isomorphism
fix and recursion


Fun with Types[edit]

Polymorphism basics 25% developed
Existentially quantified types 50% developed
Advanced type classes 50% developed
Phantom types 25% developed
Generalised algebraic data-types (GADT) 75% developed
Datatype algebra
Type constructors & Kinds 0% developed


Haskell in Time and Space[edit]

Introduction 50% developed
Step by Step Examples 0% developed
Graph reduction 25% developed
Laziness 50% developed
Time and space profiling 0% developed
Strictness 0% developed
Algorithm complexity 25% developed
Data structures
Parallelism


Haskell in Practice[edit]

This section covers the more day-to-day issues of working with Haskell, issues such as making use of the standard library, building graphical interfaces or working with databases. You should be able to jump directly to this section from the basic track.

Libraries Reference[edit]

The Hierarchical Libraries
Lists - Arrays - Maybe - Maps
Random Numbers

Tutorials[edit]

Building a standalone application
Debugging
Testing
Graphical user interfaces
Database libraries
Distributing your software with the Cabal
Web programming with Haskell