1 Haskell nowadays

 

This chapter covers:

  • How functional programming with types and support for laziness makes it easier to write programs
  • Which tools are available for Haskell development
  • Problems Haskell is good for

The history of Haskell started more than 30 years ago, in 1987 (see haskell.cs.yale.edu/wp-content/uploads/2011/02/history.pdf for many exciting details).

Nowadays it is a mature programming language, full of features, with a stable implementation, a helpful and friendly community, and a big enough ecosystem.

Paraphrasing the Haskell 2010 Language Report (www.haskell.org/onlinereport/haskell2010/), which is an effective standard description of the Haskell Language, we can give it the following definition:

Definition

Haskell is a general-purpose, purely functional programming language featuring higher-order functions, non-strict semantics, static polymorphic typing, user-defined algebraic datatypes, pattern matching, a module system, a monadic I/O system, and a rich set of primitive datatypes (including lists, arrays, arbitrary- and fixed-precision integers, and floating-point numbers).

This definition is feature-centric, but gives a little information about how to use all this stuff professionally. Haskell is by far not the most popular programming language in the world, however, and there are two unfortunate myths that contribute to its limited adoption:

  • It is hopeless to program in Haskell without PhD in math.
  • Haskell is not ready/suitable for production.

1.1  Language features and programming styles

1.1.1  Functional programming

1.1.2  Type system

1.1.3  Lazy evaluation

1.2  Tooling around Haskell

1.3  What can be done using Haskell: Libraries

1.4  What is in this book

1.5  Summary