# Awesome Haskell

An auxiliary list of awesome Haskell links, frameworks, libraries and software. The part of the awesome projects line.

- Awesome Haskell
  - Basics
  - Algorithmics
  - Audio, Music & Sound
  - Category Theory
  - Compilers
  - Concurrency & Parallelism
  - Configuration
  - Cryptography & Hashing
  - Data Access
  - Data Formats
  - Data Science
  - Data Structures
  - Database
  - Development Tools
  - Documentation
  - Distributed Computing
  - Editors
  - Extensions
  - Games
  - GUI
  - Graphics
  - Network
  - Number Theory
  - Web / Frameworks
  - Text Processing
  - Messaging
  - Languages
  - Operating Systems
  - Platforms
  - Programming
  - Science
  - Streaming Processing
- Resources
  - Websites
  - Bloggers
  - Community
  - Tutorials
  - Courses
  - Conferences
  - Packages
- License

## Basics

- Alex - a lexical analyser generator for Haskell.
- Cabal - a system for building and packaging Haskell libraries and programs.
- GHC - the state-of-the-art optimizing native code compiler for Haskell.
- GHCi - a bytecode interpreter and interactive REPL environment for Haskell.
- GHCup - GHCup is the main installer for the general purpose language Haskell.
- Hackage - the Haskell community’s central package archive.
- Haddock - a tool for automatically generating documentation from annotated Haskell source code.
- Happy - The Parser Generator for Haskell.
- Hayoo - will search all packages from Hackage, including all function and type definitions.
- Hoogle - a Haskell API search engine, which allows you to search many standard Haskell libraries by either function name, or by approximate type signature.
- hsenv - a tool to create isolated Haskell environments. This allows a project to use a GHC version different of the currently installed.
- Stack - a cross-platform tool to help on building Haskell projects. It includes support to create isolated Haskell environments and to automatically manage the dependencies of a project.
- Stackage - “Stable Hackage,” tools for creating a vetted set of packages from Hackage.

## Algorithmics

- Theorem Provers - Official Website Resources.

- Algorithm - a collaborative Hackage list.

- Algorithm Visualization - a collaborative Hackage list.

- Algorithms - a collaborative Hackage list.

- Compression - a collaborative Hackage list.

- Formal Languages - a collaborative Hackage list.

- Formal Methods - a collaborative Hackage list.

- Logic - a collaborative Hackage list.

- Logic Programming - a collaborative Hackage list.

- Map Reduce - a collaborative Hackage list.

- Graphs - a collaborative Hackage list.

- Optimization - a collaborative Hackage list.

- Simulation - a collaborative Hackage list.

- SMT - a collaborative Hackage list for Satisfiability Modulo Theories (SMT).

- Symbolic Computation - a collaborative Hackage list.

- Theorem Provers - a collaborative Hackage list.

## Audio, Music & Sound

- Audio, music and sound - official Website Resources.

- Audio - a collaborative Hackage list.

- Codec - a collaborative Hackage list.

- Graphics - a collaborative Hackage list.

- Media - a collaborative Hackage list.

- Music - a collaborative Hackage list.

- Sound - a collaborative Hackage list.

## Category Theory

- Adjunctions - a collaborative Hackage list.
- Algebra - a collaborative Hackage list.
- Categories - a collaborative Hackage list.
- Combinators - a collaborative Hackage list.
- Comonads - a collaborative Hackage list.
- Composition - a collaborative Hackage list.
- Computer Algebra - a collaborative Hackage list.
- Constraints - a collaborative Hackage list.
- Functors - a collaborative Hackage list.
- Monad - a collaborative Hackage list.
- Monads - a collaborative Hackage list.
- Semigroups - a collaborative Hackage list.

## Compilers

- Compilers & Interpreters - Official Website Resources.

- Compiler construction, lexing, parsing, pretty printing - Official Website Resources.

- Compiler - a collaborative Hackage list.

- Compiler Plugin - a collaborative Hackage list.

- Compilers/Interpreters - a collaborative Hackage list.

## Concurrency & Parallelism

- Concurrency & Parallelism - Official Website Info.

- Concurrency - a collaborative Hackage list.

- Concurrent - a collaborative Hackage list.

- Functional Reactive Programming - a collaborative Hackage list.

- Parallelism - a collaborative Hackage list.

- Concurrency & Parallelism - (Book) Parallel and Concurrent Programming in Haskell

## Configuration

- Deiko-config - small typesafe library that uses HOCON config format
- Dhall - A configuration language guaranteed to terminate
- Configurator - A configuration management library which supports automatic, dynamic reloading in response to modifications to configuration files.

## Cryptography & Hashing

- Cryptography & Hashing - Official Website Resources.

- Crypto - a collaborative Hackage list.

- Cryptography - a collaborative Hackage list.

## Data Access

- Haxl - a library for efficient, concurrent, concise data access.

## Data Formats

- JSON - a collaborative Hackage list.
- PDF - a collaborative Hackage list.
- XML - a collaborative Hackage list.
- RSS - a collaborative Hackage list.

## Data Science

- Linguistics and natural language processing - Official Website Resources.

- Robotics - Official Website Resources.

- Artificial Intelligence - a collaborative Hackage list.

- Argumentations - a collaborative Hackage list.

- Classification - a collaborative Hackage list.

- Clustering - a collaborative Hackage list.

- Data Mining - a collaborative Hackage list.

- Datamining - a collaborative Hackage list.

- Image Processing - a collaborative Hackage list.

- Machine Learning - a collaborative Hackage list.

- Machine Vision - a collaborative Hackage list.

- Natural Language Processing - a collaborative Hackage list.

- Pattern Classification - a collaborative Hackage list.

- Pattern Recognition - a collaborative Hackage list.

- Search - a collaborative Hackage list.

- Statistics - a collaborative Hackage list.

- Text Recognition - a collaborative Hackage list.

- Robotics - a collaborative Hackage list.

  Additional libraries

- m2cgen - A CLI tool to transpile trained classic ML models into a native Haskell code with zero dependencies.

## Data Structures

- Data Structures & IO Libraries - Official Website Resources.

- Advanced Structures - a collaborative Hackage list.

- Bit Vectors - a collaborative Hackage list.

- Containers - a collaborative Hackage list.

- Data Structures - a collaborative Hackage list.

- Enumerator - a collaborative Hackage list.

- Generics - a collaborative Hackage list.

- List - a collaborative Hackage list.

- Tree - a collaborative Hackage list.

- Vector - a collaborative Hackage list.

## Database

- Database Interfaces - Official Website Resources.

- Database - a collaborative Hackage list.

## Development Tools

- Development Libraries and Tools - Official Website Resources.

- Debug - a collaborative Hackage list.

- IDE - a collaborative Hackage list.

- Test - a collaborative Hackage list.

- Testing - a collaborative Hackage list.

- Logging - a collaborative Hackage list.

- CLI Tool - a collaborative Hackage list.

- Monitoring - a collaborative Hackage list.

## Distributed Computing

- Distributed Computing - a collaborative Hackage list.

- Cloud Haskell - concurrent and distributed programming in Haskell.

## Documentation

- Documentation - a collaborative Hackage list.

## Editors

- Editors written in Haskell - Official Website Resources.
- editors for Haskell - Official Website Resources.

## Extensions

- Extended Haskell - Official Website Resources.

## Games

- Games - Official Website Resources.

- Game - a collaborative Hackage list.

- Game Engine - a collaborative Hackage list.

## GUI

- Graphical User Interface (GUI) Libraries - Official Website Resources.

- GUI - a collaborative Hackage list.

- User Interfaces - a collaborative Hackage list.

## Graphics

- Graphics - Official Website Resources.

- Graphics - a collaborative Hackage list.

## Network

- Network - Official Website Resources

- Network - a collaborative Hackage list.

## Number Theory

- Number Theory - a collaborative Hackage list.
- Numeric - a collaborative Hackage list.
- Numerical - a collaborative Hackage list.
- Math - a collaborative Hackage list.

## Web / Frameworks

- Web Servers - Official Website Resources.

- Web Frameworks - Official Website Resources.

- Cloud - Official Website Resources.

- Deploy - Official Website Resources.

- Libraries - Official Website Resources.

- Interfaces to Frameworks - Official Website Resources.

- Database and Persistence - Official Website Resources.

- Testing and Verification - Official Website Resources.

- CMS - Official Website Resources for Content Management Systems (CMS).

- IHP: Integrated Haskell Platform - The best way to get started with haskell web dev. —

- Web - a collaborative Hackage list of frameworks, libraries, …

  Additional libraries

- HTTP - Haskell HTTP package. Supports client-side web programming in Haskell.

- hoauth2 - a lightweight oauth2 haskell binding.

## Text Processing

- Pandoc - is a library for converting from one markup format to another, and a command-line tool that uses this library.

## Messaging

- SimpleX Chat - the first chat platform that is 100% private by design - it has no access to your connection graph!
- Stomp - is the Simple (or Streaming) Text Orientated Messaging Protocol. Resources.
- amqp - client library for AMQP servers (currently only RabbitMQ).
- IRC - a collaborative Hackage list for Internet Relay Chat (IRC).
- IRC Client - a collaborative Hackage list.

## Languages

- Tools for interfacing with other languages - Official Website Resources.

- Code Generation - a collaborative Hackage list.

- FFI - a collaborative Hackage list.

- FFI Tools - a collaborative Hackage list.

- HTML - a collaborative Hackage list.

- Java - a collaborative Hackage list.

- Javascript - a collaborative Hackage list.

- LaTex - a collaborative Hackage list.

- Lua - a collaborative Hackage list.

  Additional languages on top of Haskell

- Fay - a proper subset of Haskell that compiles to JavaScript.

- Idris - A Dependently Typed Functional Programming Language

- Copilot - a (Haskell DSL) stream language for generating hard real-time C code.

- Wasp - a simple language for developing full-stack Javascript web apps with less code (built with Haskell)

## Operating Systems

- Operating systems and systems programming - Official Website Resources.

- BSD - a collaborative Hackage list.

- Fedora - a collaborative Hackage list.

- Gentoo - a collaborative Hackage list.

- Linux - a collaborative Hackage list.

- System - a collaborative Hackage list.

## Platforms

- .NET - a collaborative Hackage list.
- Apple - a collaborative Hackage list.
- JVM - a collaborative Hackage list.
- Mobile - a collaborative Hackage list.

## Programming

- Generic Programming - Official Website Resources.

- Aspect Oriented Programming - a collaborative Hackage list.

- Generic Programming - a collaborative Hackage list.

- Logic Programming - a collaborative Hackage list.

- Reactive Programming - a collaborative Hackage list.

- Visual Programming - a collaborative Hackage list.

## Science

- Bioinformatics - Official Website Resources.

- Mathematics & Physics - Official Website Resources.

- Chemistry - a collaborative Hackage list.

- Bioinformatics - a collaborative Hackage list.

- Finance - a collaborative Hackage list.

- Physics - a collaborative Hackage list.

- Science - a collaborative Hackage list.

- Scientific Simulation - a collaborative Hackage list.

## Streaming Processing

- Conduit - a streaming data library. Resources.
- IO-Streams - a collaborative Hackage list.
- Pipes - is a clean and powerful stream processing library that lets you build and connect reusable streaming components. Resources.
- HStreamDB - The streaming database built for IoT data storage and real-time processing.

# Resources

## Websites

- Haskell - Official Website.
- The Haskell Programming Language - Haskell wiki.
- Try Haskell - Haskell Online.
- School of Haskell - Learning Haskell.

## Bloggers

- Neil Mitchell - Neil Mitchell’s Haskell Blog.

## Community

- Community - Official community resources.
- Reddit
- Stackoverflow
- G+
- Mailing lists
- IRC channels
- Local user groups
- Planet Haskell
- Haskell Communities and Activities Report

## Tutorials

- Documentation - Official documentation resources.

- Learn Haskell - Wiki Learning Resources.

- Books & Tutorials

- learnhaskell - Haskell Learning (also for non-English speakers).

- What I Wish I Knew When Learning Haskell - amazing guide for all kinds of things.

- LearnYouHaskell - Learn You a Haskell for Great Good!

- Happy Learn Haskell Tutorial - Pain-free, Gradual Haskell Tutorial with cartoon robots!

- Revised report - Haskell 98 Language and Libraries. The Revised Report.

- H-99 - Ninety-Nine Haskell Problems.

  ### Web Tutorials

  - Introduction to Haskell - Web Programming
  - Your First Web Application with Spock
  - Scotty-Tutorials-&-Examples
  - Getting Started
  - Developing Web Applications with Yesod and Haskell

### Video Tutorials

- Redoing Make - Haskell from Scratch
- Haskell - Code Deconstructed
- Adventures in Haskell - A Calculator
- Sed implementation in Haskell
- LazyCasts
- Haskell Development Workflow Demo
- Learn You a Haskell - Video lectures to accompany the book “Learn You a Haskell for Great Good!”
- Awesome Haskell Videos - Curated list of Haskell talks and tutorials
- IHP Casts Learn to build type-safe web apps with Haskell and IHP

## Courses

- Introduction to Functional Programming - Fall 2014 MOOC on edX by DelftX featuring Haskell as the primary language of focus.
- Functional Programming in Haskell - Introductory MOOC to functional programming in Haskell by the University of Glasgow.
- Haskell MOOC - MOOC on functional programming that uses Haskell by University of Helsinki.

## Conferences

- ICFP - International Conference on Functional Programming. Youtube channel.
- Conferences - Official list of conferences
- Haskell Symposium 2015
- Haskell Implementors’ Workshop 2015

## Packages

- Stackage - is a stable source of Haskell packages, “Stable Hackage”.
- Hackage - is the Haskell community’s central package archive.
- Application & Libraries - Official collections and Guide.
- Hoogle - is a Haskell API search engine, which allows you to search many standard Haskell libraries by either function name, or by approximate type signature.
- Hayoo - will search all packages from Hackage, including all function and type definitions.

## Best Practices

- Haskell Style Guide # License