Elite software development.

Top 10 Most-Used Haskell Packages

This article lists the top 10 most used Haskell packages and summarizes each.

New to Haskell programming? Wondering which Haskell packages will help you get to know the language well? You might be interested to know which are the most popular.

The site revdeps.hackage.haskell.org lists the reverse dependencies of all packages on Hackage. The list can be sorted by a count of direct dependencies.

The top 10 most (directly) depended upon Haskell packages are, as of 26 October 2011, in order, as follows:

  1. base
  2. containers
  3. bytestring
  4. mtl
  5. directory
  6. array
  7. filepath
  8. haskell98
  9. random
  10. parsec

Here are brief summaries of each package, and a link to the docs for each.

1. base

Contains the functionality for the Prelude and its supporting functions, including modules necessary to implement the Prelude.

2. containers

Contains efficient implementations of various basic immutable container types: Sequence, Set, Map, Tree, Graph.

3. bytestring

Provides an efficient implementation of byte vectors, suitable for high performance use. Bytestrings are encoded as strict Word8 arrays of bytes. Lazy Bytestrings are lazy lists of strict chunks.

4. mtl

= monad transformer library. It provides monad definitions and monad transformers for: Reader, Writer, State, MonadIO, and others. Learn more from Ch. 18 of RWH.

5. directory

Provides a system-independent directory manipulation libary. System.Directory provides functions like getDirectoryContents and removeFile.

6. array

Provides array data types of various sorts: strict, lazy, mutable, immutable, boxed, unboxed.

7. filepath

Provides system-independent manipulation of FilePaths. A FilePath is a data type for representing exactly what you think it does.

8. haskell98

Provides compatibility with the modules of the (outdated) Haskell 98 specification.

9. random

Interesting that a random number library is so important to software development that it appears on the top 10 list.

10. parsec

This is a library of monadic parsing combinators. Learn more in Ch. 16 of RWH. There are many alternatives.