xxiii
Introduction
Functional programming is gathering momentum. Mainstream languages such as Java and C# are adopting features
from this paradigm; and languages such as Haskell, Scala, Clojure, or OCaml, which embody functional programming
from the very beginning, are being used in industry. Haskell is a noise-free, pure functional language with a long
history, having a huge number of library contributors and an active community. is makes Haskell a great tool for
both learning and applying functional programming.
Why You Should Learn Functional Programming
e rise in functional programming comes from two fronts. Nowadays, most applications are heavily concurrent or
need to be parallelized to perform better. ink of any web server that needs to handle thousands of connections at
the same time. e way you express the intent of your code using Haskell makes it easier to move from a single-thread
application to a multi-threaded one at a negligible cost.
Apart from becoming more concurrent, applications are becoming much larger. You would like your
development environment to help you catch bugs and ensure interoperation between all modules of your system.
Haskell has a very strong type system, which means that you can express a wide range of invariants in your code,
which are checked at compile time. Many of the bugs, which previously would be caught using tests, are now
completely forbidden by the compiler. Refactoring becomes easier, as you can ensure that changes in your code do
not aect those invariants.
Learning functional programming will put you in a much better position as a developer. Functional thinking will
continue permeating through mainstream programming in the near future. You’ll be prepared to develop larger and
faster applications that bring satisfaction to your customers.
Why You Should Read this Book
is book focuses both on the ideas underlying and in the practicalities of Haskell programming. e chapters show
you how to apply functional programming concepts in real-world scenarios. ey also teach you about the tools and
libraries that Haskell provides for each specic task. Newcomers to functional programming will not be the only ones
who will benet from reading this book. Developers of Scala, Clojure, Lisp, or ML will be also able to see what sets
Haskell apart from other languages.
e book revolves around the project of building a web-based strorefront. In each of the ve parts the focus is on
a subsystem of this store: representing clients and products in-memory, data mining (including parallelization and
concurrency), persistent storage, discount and oers, and the general architecture of the application. e topics have
been carefully selected for you to get a glimpse of the whole Haskell ecosystem.