HaskellAn advanced purely-functional programming language
Declarative, statically typed code.
primes = filterPrime [2..] 
  where filterPrime (p:xs) = 
          p : filterPrime [x | x <- xs, x `mod` p /= 0]

Try it

An open source community effort for over 20 years

Learn more

Features

Statically typed

Every expression in Haskell has a type which is determined at compile time. All the types composed together by function application have to match up. If they don't, the program will be rejected by the compiler. Types become not only a form of guarantee, but a language for expressing the construction of programs.

Click to expand

Purely functional

Every function in Haskell is a function in the mathematical sense (i.e., "pure"). Even side-effecting IO operations are but a description of what to do, produced by pure code. There are no statements or instructions, only expressions which cannot mutate variables (local or global) nor access state like time or random numbers.

Click to expand

Type inference

You don't have to explicitly write out every type in a Haskell program. Types will be inferred by unifying every type bidirectionally. However, you can write out types if you choose, or ask the compiler to write them for you for handy documentation.

Click to expand

Concurrent

Haskell lends itself well to concurrent programming due to its explicit handling of effects. Its flagship compiler, GHC, comes with a high-performance parallel garbage collector and light-weight concurrency library containing a number of useful concurrency primitives and abstractions.

Click to expand

Lazy

Functions don't evaluate their arguments. This means that programs can compose together very well, with the ability to write control constructs (such as if/else) just by writing normal functions. The purity of Haskell code makes it easy to fuse chains of functions together, allowing for performance benefits.

Click to expand

Packages

Open source contribution to Haskell is very active with a wide range of packages available on the public package servers.

Click to expand

Sponsors

DataDog provides powerful, customizable 24/7 metrics and monitoring integration for all of Haskell.org, and complains loudly for us when things go wrong.

Fastly's Next Generation CDN provides low latency access for all of Haskell.org's downloads and highest traffic services, including the primary Hackage server, Haskell Platform downloads, and more.

Rackspace provides compute, storage, and networking resources, powering almost all of Haskell.org in several regions around the world.

Status.io powers https://status.haskell.org, and lets us easily tell you when we broke something.

Galois provides infrastructure, funds, administrative resources and has historically hosted critical Haskell.org infrastructure, as well as helping the Haskell community at large with their work.

DreamHost has teamed up to provide Haskell.org with redundant, scalable object-storage through their Dream Objects service.

Awake Networks is building a next generation network security and analytics platform. They are a proud sponsor of the Summer of Haskell and contribute broadly to the Haskell community.

Haskell Book is a proud sponsor of the Summer of Haskell and provides a complete and up-to-date resource for learning Haskell -- suitable whether you're completely new to Haskell or are at an intermediate level and want to deepen your understanding.

Webmon provides monitoring and escalation for core haskell.org infrastructure.

Psst! Looking for the wiki?

This is the new Haskell home page! The wiki has moved to wiki.haskell.org.