Introduction to Haskell

Haskell is a pure functioning programming language created over 20 years ago by researchers from a consortium of major universities. It is sustained and enhanced by an enthusiastic and dedicated global open-source community. Haskell’s approach is fundamentally different from other imperative languages (Java, C family, Python etc.) dominant today. Haskell programs are a series of high-level generalizable functions that define what the program is intended to do, and the programmer focuses on the objective, the best design and ensuring the logic is correct.

Haskell is a leap forward from traditional programming's series of low-level instructions telling the computer exactly how to calculate things in minute, step-by-step order. Haskell frees the programmer from many of these minutiae, and drastically reduces the time spent finding and correcting errors. At the same time, it provides native support for high-performance, multicore, scalable computing.

Watch our short Introduction to Haskell video to understand why developers prefer Haskell over other programming languages.

Learning resources

One of the best online resources for learning Haskell and Haskell-related topics is the School of Haskell, packed with tutorials and books with interactive code snippets, contributed by well-known Haskell authors and community members.

Benefits of Haskell

Strategic Benefits of Haskell

  • Reduce the high rate of software project failure and billions of dollars wasted on the bug fix/maintenance/rewrite cycle
  • Accelerate time to market by 30-50%
  • Improve product quality
  • Increase programmer productivity
  • Scale up dramatically, with included support for multi-core and cloud computing
  • Improve data quality with Haskell's powerful, extensible data type system

These real-world case studies describe how several companies achieved faster time to market, better quality, and better scalability by using Haskell in their professional work. We've included examlpes of companies switching to Haskell from other languages, or using a mixture of Haskell and other languages.

Key Features of Haskell

  • Cut code size by 50-80%
  • Dramatically cut errors
  • Significantly reduce time for finding and fixing errors—fewer errors and fixing them at compile time, not run-time
  • Easy code maintenance and rework without introducing new errors (no more spaghetti code)
  • Much more secure—much fewer holes to exploit
  • Built-in concurrency and parallel processing boost performance

Domains

Haskell is the right choice for organizations needing:

  • Big Data broadly defined: data analysis, modeling, simulation
  • Fast time to market or prototyping
  • High-quality correct code
  • Frequently changing applications
  • Easy maintenance
  • High security

Markets currently using Haskell

  • Financial services (especially trading & contracts)
  • Hardware & software design
  • Energy
  • Big Pharma & biotech
  • Consumer data
  • Scientific computing
  • Web applications

Download Haskell

For everything you need to get started with Haskell, you need The Haskell Stack.

Downloads are available by operating system:

Go into a Haskell project directory and run stack build. If everything is already configured, this will:

  • Download the package index.
  • Download and install all necessary dependencies for the project.
  • Build and install the project.

You may be prompted to run some of the following along the way:

  • stack new to create a brand new project.
  • stack init to create a stack configuration file for an existing project. stack will figure out what Stackage release (LTS or nightly) is appropriate for the dependencies.
  • stack setup to download and install the correct GHC version in an isolated location (default ~/.stack) that won't interfere with any system-level installations. (For information on installation paths, please use the stack path command.)

If you just want to install an executable using stack, then all you have to do is stack install <package-name>.

Run stack for a complete list of commands.