Standardized, statically typed, lazy functional programming language

Haskell is an advanced, general-purpose, purely functional programming language. It has a strong, static type system with Hindley-Milner type inference.

The language natively supports lazy evaluation, and functions are generally not allowed to have side effects. This leads to a concise and declarative style of programming, which differs quite a bit from conventional languages. By not allowing side effects and dealing with immutable data, the compiler can avoid whole classes of bugs.

Haskell generally compiles to fast, native code, but it can also be compiled to other targets like JavaScript (through GHCJS) or LLVM.

In Google Summer of Code, we attempt to improve not only the language, but the whole ecosystem. This includes (aside from the language itself):

  • Compilers
  • Commonly used libraries
  • Commonly used applications written in Haskell
  • Profilers, debuggers and other tools
  • Package managers and infrastructure

We have compiled an ideas list together with long-time Haskell users, compiler contributors and researchers, and as such we believe these are important projects for the industry and academia both.

lightbulb_outline View ideas list


  • haskell


comment IRC Channel
email Mailing list
mail_outline Contact email 2018 Projects

  • Gagandeep Bhatia
    A Library for In-Memory Data Analysis in Haskell
    A typical workflow in interactive data analysis consists of : Loading data (e.g. a CSV on disk) Transforming the data Various data processing stages...
  • Alanas Plascinskas
    Add support for deprecating exports
    Add support of deprecation pragmas within module exports. This would ease the transition between different versions of the software by warning the...
  • Alexandre Moine
    Benchmarking graph libraries and optimising algebraic graphs
    A graph represents a key structure in computer science and they are known to be difficult to work with in functional programming languages. Several...
  • Ningning Xie
    Dependently Typed Core Replacement in GHC
    In recent years, several works (Weirich et al., 2017; Eisenberg, 2016; Gundry, 2013) have proposed to integrate dependent types into Haskell....
  • Khilan Ravani
    Enhancing the Haskell Image Processing Library with State of the Art Algorithms : Project Proposal GSoC, 2018
    The project proposed here aims to implement different classes of Image processing algorithms using Haskell and incorporate the same to the existing...
  • Luke Lau
    Functional test framework for the Haskell IDE Engine and Language Server Protocol Library
    The Haskell IDE Engine is a Haskell backend for IDEs, which utilises the Language Server Protocol to communicate between clients and servers. This...
  • Alexis Williams
    Helping cabal new-build become just cabal build
    While much of the functionality required to use the new-* commands has already been implemented, there are not-insignificant parts of the design that...
  • Simon Jakobi
    Hi Haddock
    A long-standing issue with Haskell’s documentation tool Haddock is that it needs to effectively re-perform a large part of the...
  • Andreas Klebinger
    Improvements to GHC's handling of conditionals.
    Improvements to GHC's Code Generator Improved code layout In the current approach there is no way to incorporate additional control flow information...
  • Abhiroop Sarkar
    Improving the GHC code generator
    This project attempts to improve the native code generator of GHC by adding support for Intel AVX and SSE SIMD instructions. This support would...
  • Zubin Duggal
    Making GHC Tooling friendly
    GHC builds up a wealth of information about Haskell source as it compiles it, but throws all of it away when it's done. Any external tools that need...
  • Shayan Najd
    Native-Metaprogramming Reloaded
    The goal is to continue on an ongoing work, utilising the Trees that Grow technique, to introduce native-metaprogramming in GHC....
  • Andrew Knapp
    Parallel Automatic Differentiation
    Automatic Differentation (AD) is a technique for computing derivatives of numerical functions that does not use symbolic differentiation or...
  • Francesco Gazzetta @fgaz
    Support for Multiple Public Libraries in a .cabal package
    Large scale haskell projects tend to have a problem with lockstep distribution of packages (especially backpack projects, being extremely granular)....
  • Krystal Maughan
    Visual Tools and Bindings for Debugging in Code World
    Visual Debugging tools that will allow various ages to interact with and learn visually while tracing their bugs in Haskell