Newbies What Next ? News Forums Calendar


News Sections
General News (3987/0)
Reviews (637/0)
Press Releases (465/0)
Distributions (197/0)
Software (908/0)
Hardware (537/0)
Security (192/0)
Tutorials (356/0)
Off Topic (181/0)

User Functions


Don't have an account yet? Sign up as a New User

There are no upcoming events

9 Best Free Haskell Books

9 Best Free Haskell Books

Haskell is a standardized, general-purpose, polymorphically statically typed, lazy, purely functional language, markedly different from most other programming languages. It includes many recent innovations such as static polymorphic typing, higher-order functions, user-definable algebraic data types, a module system, and more. It has built-in concurrency and parallelism, debuggers, profilers, rich libraries and an active community, with approximately 5,000 third-party open source libraries and tools.

Haskell is a mature programming language with the first version being defined in 1990. Haskell has a strong, static type system based on Hindley–Milner type inference. The main implementation of Haskell is the Glasgow Haskell Compiler (GHC), an open source native code compiler.

Haskell offers many advantages to programmers. It helps developers quickly create robust software, with shorter, clearer code, and higher reliability. It is suitable for a variety of applications.

The focus of this article is to select the finest Haskell books which help programmers master this language, and develop an in-depth understanding of the benefits that this programming language offers. All of the books are available to download for free.

To cater for all tastes, we have chosen a good range of books. The texts here come with our strongest recommendation. So get reading (and downloading).

1. Real World Haskell

Real World Haskell
Author Bryan O'Sullivan, Don Stewart, and John Goerzen
Format HTML
Pages 714

Real World Haskell is an easy-to-use, fast-moving tutorial that introduces the reader to functional programming with Haskell.

The reader learns how to use Haskell in a variety of practical ways, from short scripts to large and demanding applications. Real World Haskell takes you through the basics of functional programming at a brisk pace, and then helps you increase your understanding of Haskell in real-world issues like I/O, performance, dealing with data, concurrency, and more as you move through each chapter.

Chapters cover:

  • Getting started
  • Types and functions - provides an overview of Haskell's type system, and much of its syntax. It covers some common basic types, function application, useful composite data types: lists and tuples, functions over lists and tuples, function types and purity, Haskell source files and writing simple functions, understanding evaluation by example, and polymorphism in Haskell
  • Defining types, streamlining functions - build on this basic knowledge to further enhance our understanding of Haskell
  • Functional programming - a simple command line framework, a built-in function lines to split a text string on line boundaries, infix functions, working with lists, how to think about loops, anonymous (lambda) functions, partial function application and currying, as-patterns, and code reuse through composition
  • Writing a library: working with JSON data - develop a small, but complete, Haskell library
  • Using typeclasses - learn about the need for typeclasses and how to use them. The authors talk about defining their own typeclasses and then cover some of the important typeclasses that are defined in the Haskell library. Finally, the reader is showed how to have the Haskell compiler automatically derive instances ocf certain typeclasses for their types
  • Input and output - simple, standard-looking I/O, then discusses some of the more powerful options as well as provide more detail on how I/O fits into the pure, lazy, functional Haskell world
  • Efficient file processing, regular expressions, and file name matching
  • I/O case study: a library for searching the filesystem - develop a library that gives us many of find's capabilities, without leaving Haskell. The authors explore several different approaches to writing this library, each with different strengths
  • Code case study: parsing a binary data format
  • Testing and quality assurance - how to use QuickCheck to establish invariants in code and then re-examine the pretty printer developed in previous chapters, testing it with QuickCheck. The authors also see how to guide the testing process with GHC's code coverage tool: HPC
  • Barcode recognition - make use of the image parsing library developed in the code cast study to build a barcode recognition application
  • Data structures - looks at association lists, maps, and different data structures, with some extended examples
  • Monads - provide a powerful way to build computations with effects. This chapter illustrates how monads are useful tools to help solve practical problems
  • Programming with monads - including association lists, generalised lifting, and separating interface from implementation
  • The Parsec parsing library - a useful parser combinator library, with which we combine small parsing functions to build more sophisticated parsers
  • The foreign function interface - shows how the FFI adds a new dimension of flexibility to the language
  • Monad transformers - similar to a regular monad, but it's not a standalone entity: instead, it modifies the behaviour of an underlying monad
  • Error handling - in Haskell, you will find two major types of error handling employed: "pure" error handling and exceptions
  • Systems programming - attempts a Perl-like "language" that is valid Haskell, implemented in pure Haskell, that makes shell scripting easy
  • Working with databases - introduces the reader to one of the Haskell frameworks for working with databases. The authors also use this framework to begin building a podcast downloader
  • Web client programming - develop a real application in this chapter: a podcast downloader, or "podcatcher"
  • GUI programming - looks at gtk2hs, one of several graphical user interface toolkits available for Haskell
  • Basic concurrent and parallel programming - harness the power of multicore systems via concurrent and parallel programming
  • Profiling and tuning for performance - looks at typical space and time problems a Haskell programmer might encounter, and how to methodically analyse, understand and address them
  • Advanced library design: building a Bloom filter - a set-like data structure that is highly efficient in its use of space
  • Network programming - discusses lower-level networking tools in the Haskell library
  • Software transactional memory

This work is licensed under a Creative Commons Attribution-Noncommercial 3.0 License.

2. Developing Web Applications with Haskell and Yesod

Developing Web Applications with Haskell and Yesod
Author Michael Snoyman
Format HTML
Pages 298

Developing Web Applications with Haskell and Yesod is a guide which introduces web application development with Haskell and Yesod, a potent language/framework combination that supports high-performing applications that are modular, type-safe, and concise. The reader works with several samples to explore the way Yesod handles widgets, forms, persistence, and RESTful content. The reader also receives an introduction to various Haskell tools to supplement basic knowledge of the language.

After completing the book, the reader will have created a production-quality web application with Yesod’s ready-to-use scaffolding. Real-world examples, including a blog, a wiki, a JSON web service, and a Sphinx search server will have been examined.

Chapters cover:

  • Introduction - examines how Yesod aims to make web development easier by playing to the strengths of Haskell
  • Haskell - fills in some of the features of Haskell that are not covered in most introductory texts
  • Basics - gets the reader started with a simple Yesod application, and cover some of the basic concepts and terminology
  • Shakespearean Templates - use Shakespearean template languages for HTML, CSS, and Javascript output
  • Widgets - provide the glue that allows templates languages to work together. The chapter helps the reader understand how to construct and combine widgets, generate IDs, and understand type signatures
  • Yesod Typeclass - explores the meaning of many of the methods of the Yesod typeclass
  • Routing and Handlers - examines route syntax, pieces, types of pieces (static, dynamic single and dynamic multi), resource name, handler specification, dispatch, return type, arguments, the handler monad, application information, request information, short circuiting, and response headers
  • Forms - a way to validate data
  • Sessions & Persistent - learn how Yesod and Haskell store session data and handle persistence
  • Deploying your Webapp - build a simple application to learn Yesod’s foundation datatype and Web Application Interface (WAI)
  • Advanced:
    • RESTful Content - request methods: GET, POST, PUT, DELETE, representations, RepHtmlJson, news feeds, other request headers, stateless
    • Yesod's Monads - monad transformers, the three transformers, example: database-driven navbar, example: request information
    • Authentication and Authorization - authentication deals with identifying a user, authorization determines what a user is allowed to do
    • Scaffolding and the Site Template
    • Internationalization
    • Creating a Subsite - a collection of routes and their handlers that can be easily inserted into a master site. Create reusable components for several applications with Yesod subsites
  • Examples
    • Blog: i18n, authentication, authorization, and database
    • Wiki: markdown, chat subsite, event source
    • JSON Web Service
    • Case Study: Sphinx-based Search

3. Learn You a Haskell for Great Good!

Learn You a Haskell for Great Good!
Author Miran Lipovača
Format HTML
Pages 376

Learn You a Haskell for Great Good! is an illustrated guide to this complex functional language. Packed with the author's original artwork, pop culture references, and most importantly, useful example code, this book teaches functional fundamentals in a way you never thought possible.

Chapters cover:

  • Introduction
  • Starting Out - includes an introduction to lists, texas ranges, and tuples
  • Types and Typeclasses - understanding the type system
  • Syntax in Functions - explores some of Haskell's constructs including pattern matching and let bindings
  • Recursion - takes a closer look at recursive functions, why they are important to Haskell and how we can work out very concise and elegant solutions to problems by thinking recursively
  • Higher-Order Functions - curried functions, maps and filters, lambdas, the foldl and foldr functions, the foldl1 and foldr1 functions, and the scanl and scanr functions, function application with $, function composition
  • Modules - a Haskell module is a collection of related functions, types and typeclasses. The chapter examines loading modules, Data.List, Data.Char, Data.Map, Data.Set, and making your own modules
  • Making Our Own Types and Type Classes - learn how to make your own Haskell types and typeclasses
  • Input and Output - examines files and streams, command line arguments, randomness, bytestrings and exceptions
  • Functionally Solving Problems - takes a look at a few interesting problems and how to think functionally
  • Functors, Applicative Functors and Monoids - takes a closer look at functors, along with slightly stronger and more useful versions of functors called applicative functors. The reader also explores monoids
  • A Fistful of Monads - learn about monads, which are beefed up applicative functors, much like applicative functors are beefed up functors
  • For a Few Monads More - learn about a few other monads. See how they can make programs clearer by letting us treat all sorts of values as monadic ones
  • Zippers - see how we can take some data structure and focus on a part of it in a way that makes changing its elements easy and walking around it efficient

Next Section: 9 Best Free Haskell Books - Page 2

This article is divided into three parts:

Page 1, Page 2, Page 3

Bookmark and Share

Last Updated Sunday, June 07 2015 @ 02:00 PM EDT

We have written a range of guides highlighting excellent free books for popular programming languages. Check out the following guides: C, C++, C#, Java, JavaScript, CoffeeScript, HTML, Python, Ruby, Perl, Haskell, PHP, Lisp, R, Prolog, Scala, Scheme, Forth, SQL, Node.js (new), Fortran (new), Erlang (new), Pascal (new), and Ada (new).

Group Tests
100 Essential Apps
All Group Tests

Top Free Software
5 Office Suites
3 Lean Desktops
7 Document Processors
4 Distraction Free Tools
9 Project Management
4 Business Solutions
9 Groupware Apps
14 File Managers
10 Databases
21 Backup Tools
21 Productivity Tools
5 Note Taking Apps
9 Terminal Emulators
21 Financial Tools
5 Bitcoin Clients
21 Text Editors
21 Video Emulators
21 Home Emulators
42 Graphics Apps
6 CAD Apps
42 Scientific Apps
10 Web Browsers
42 Email Apps
12 Instant Messaging
10 IRC Clients
7 Twitter Clients
12 News Aggregators
11 VoIP Apps
42 Best Games
9 Steam Games
42 Audio Apps
5 Music Streaming
42 Video Apps
5 YouTube Tools
80 Security Apps
9 System Monitoring
8 Geometry Apps
Free Console Apps
14 Multimedia
4 Audio Grabbers
9 Internet Apps
3 HTTP Clients
5 File Managers
8 Compilers
9 IDEs
9 Debuggers
7 Revision Control Apps
6 Doc Generators
Free Web Software
21 Web CMS
14 Wiki Engines
8 Blog Apps
6 eCommerce Apps
5 Human Resource Apps
10 ERP
10 CRM
6 Data Warehouse Apps
8 Business Intelligence
6 Point-of-Sale

Other Articles
Migrating from Windows
Back up your data
20 Free Linux Books
24 Beginner Books
12 Shell Scripting Books

Older Stories
Sunday 03/22
  • Ubuntu MATE 15.04 for Raspberry Pi 2 (0)

  • Monday 03/16
  • MIPS Creator CI20 v Raspberry Pi 2 (0)
  • Raspberry Pi 2: Raspbian (ARMv6) v Linaro (ARMv7) (0)

  • Friday 03/06
  • Raspberry Pi 2 review (0)

  • Sunday 02/22
  • Chess in a Few Bytes (0)
  • Learn the Art of Computer Programming With These Great Free Beginner Books (2)
  • CD Audio Grabbers (0)

  • Monday 01/19
  • fitlet is a tiny fanless PC full of openness (0)

  • Sunday 01/18
  • MintBox Mini gives Linux users a pocket-sized PC (0)
  • 6 Invaluable Assembly Books (0)

  • Vote

    What Linux distribution do you run on your main computer?

    707 votes | 3 comments

    Built with GeekLog and phpBB
    Comments to the webmaster are welcome
    Copyright 2009 - All rights reserved