Skip to main content

Haskell libraries

Web

  • scotty
  • servant - DSL for describing, serving, querying, mocking, documenting web applications and more.
  • WAI - Interface between Haskell web frameworks and web servers.
  • Twain - Tiny web application framework for WAI. (Building a bulletin board using twain and friends) (Bulletin board code)
  • Mu - Purely functional framework for building micro services.
  • Hydra - Full-fledged framework for building web services, multithreaded and concurrent applications with SQL and KV DB support.
  • Obelisk - Provides an easy way to develop and deploy your Reflex project for web and mobile. (Web)
  • type-of-html - High performance type safe html generation.
  • EulerHS - Free monadic framework for easy building backend and console applications in Haskell.
  • websockets - Haskell library for creating WebSocket-capable servers.
  • haskell-wasm - Haskell WebAssembly Toolkit.
  • Morpheus GraphQL - Haskell GraphQL API, Client and Tools.
  • http-streams - Haskell HTTP client library for use with io-streams.
  • Reflex-DOM - Web applications without callbacks or side-effects.
  • immortal - Small library to create threads that never die.
  • retry - Retry combinators for monadic actions that may fail.
  • jose - Haskell JOSE and JWT library.
  • network-wait - Lightweight Haskell library for waiting on networked services to become available.
  • Biscuit - Haskell libraries providing support for the Biscuit auth toolkit.

DB

  • groundhog - PostgreSQL, MySQL, and SQLite with ultimate type safety.
  • Hasql - Performant PostgreSQL driver with a flexible mapping API.
  • PostgreSQL ORM - Haskell ORM (Object Relational Mapping) and migrations DSL for PostgreSQL.
  • Squeal - Deep embedding of SQL in Haskell.
  • persistent - Persistence interface for Haskell allowing multiple storage methods.
  • hssqlppp - SQL parser and type checker in haskell.
  • Beam - Type-safe, non-TH Haskell relational database library and ORM.
  • PG-Entity - PostgreSQL database layer that does not get in your way.
  • Haskell PostgreSQL-typed - Haskell PostgreSQL library with compile-time type inference.
  • sqlite-simple - Mid-level bindings for sqlite.
  • pool - Fast Haskell library for managing medium-lifetime pooled resources, such as database connections.
  • acid-state - Add ACID guarantees to any serializable Haskell data structure.
  • oso - Haskell bindings to the Polar query engine and Oso authorization library.
  • haskell-relational-record - Includes a joined query generator based on typefull relational algebra, and mapping tools between SQL values list and Haskell record type.
  • HieDb - Generates a references DB from .hie files.
  • PostgreSQL Binary - Encoders and decoders for the PostgreSQL's binary format.
  • Rel8 - Haskell library for interacting with PostgreSQL databases.

Test

  • Hedgehog - Modern property-based testing system, in the spirit of QuickCheck. (Web)
  • Hedgehog Classes - API for testing common typeclass laws quickly.
  • QuickCheck - Library for random testing of program properties.
  • Validity - Validity and validity-based testing.
  • sydtest - Experimental testing framework for Haskell with great defaults advanced testing features.
  • Tasty - Modern and extensible testing framework for Haskell.
  • StrictCheck - Property-based random testing framework for observing, specifying, and testing the strictness behaviors of Haskell functions.
  • Hspec - Testing Framework for Haskell.
  • generic-random - Generic random generators to implement Arbitrary instances for QuickCheck.
  • Higher-order QuickCheck - QuickCheck extension for properties of higher-order values.
  • checkers - Check properties on standard classes and data structures.
  • cabal-doctest - Setup.hs helper for doctest running.
  • Inspection Testing - GHC plugin allows you to embed assertions about the intermediate code into your Haskell code, and have them checked by GHC.

CLI

  • Haskeline - Haskell library for line input in command-line programs.
  • unbeliever - Library for writing command-line applications, be they tools or long-running daemons.
  • butcher - Chops a command or program invocation into digestable pieces.
  • vty - High-level ncurses alternative written in Haskell.

Error

  • eio - IO with Exceptions tracked on the type-level.
  • on-error - Clearly-delineated error-handling.
  • annotated-exception - Provides a special AnnotatedException type which allows you to decorate Haskell exceptions with additional information.
  • safe-exceptions - Safe, consistent, and easy exception handling.

Graphics

  • Threepenny-GUI - GUI framework that uses the web browser as a display.
  • Monomer - Easy to use, cross platform, GUI library for writing Haskell applications.
  • haskell-chart - 2D charting library.
  • hylogen - GLSL embedded in Haskell.

ML

  • convoluted - Dependently typed convolutional neural networks.
  • Easytensor - Many-dimensional type-safe numeric ops.
  • HLearn - Homomorphic machine learning.
  • Vehicle - Toolkit for enforcing logical specifications on neural networks.

Math

  • arithmoi - Number theory: primes, arithmetic functions, modular computations, special sequences.
  • vector-sized - Exports a newtype tagging the vectors from the vector package with a type-level natural representing their size.
  • Statistics - Fast, high quality library for computing with statistics in Haskell.
  • Data.Scientific - Arbitrary-precision floating-point numbers represented using scientific notation.

Crypto

  • lol - Functional Lattice Cryptography.
  • haskell-crypto - High-level cryptography for Haskell.

Other

  • generic-lens - Generically derive traversals, lenses, and prisms.
  • freer-simple - Friendly effect system for Haskell.
  • Capability - Extensional capabilities and deriving combinators.
  • Req - Easy-to-use, type-safe, expandable, high-level HTTP client library.
  • silica - Haskell optics with type errors useful enough to teach people.
  • aeson - Fast Haskell JSON library.
  • proto-lens - API for protocol buffers using modern Haskell language and library patterns.
  • dynamic - Dynamic typing in Haskell.
  • free - Provides a common definitions for working with free monads, free applicatives, and cofree comonads in Haskell.
  • inline-js - Run JavaScript in Haskell.
  • fused-effects - Fast, flexible, fused effect system for Haskell.
  • concat - Compiling to Categories.
  • polysemy - Higher-order, no-boilerplate, zero-cost monads.
  • optics - Family of Haskell packages make it possible to define and use Lenses, Traversals, Prisms and other optics, using an abstract interface.
  • Duckling - Haskell library that parses text into structured data.
  • Esqueleto - Bare bones, type-safe EDSL for SQL queries that works with unmodified persistent SQL backends.
  • Selda - Type-safe, high-level SQL library for Haskell.
  • Hasktorch - Tensors and neural networks in Haskell.
  • eff - Work-in-progress implementation of an extensible effect system for Haskell, a general-purpose solution for tracking effects at the type level and handling them in flexible ways.
  • hmatrix - Linear algebra and numerical computation.
  • Alex - Lexical analyser generator for Haskell. (Code)
  • Megaparsec - Industrial-strength monadic parser combinator library. (Megaparsec tutorial)
  • containers - Assorted concrete container types.
  • relude - Safe, performant, user-friendly and lightweight Haskell standard library.
  • hypertypes - Types parameterised by hypertypes.
  • propagators - The Art of the Propagator.
  • Blarney - Haskell library for hardware description that builds a range of HDL abstractions on top of a small set of core circuit primitives.
  • Clay - CSS preprocessor as embedded Haskell.
  • Repline - Haskeline wrapper for GHCi-like REPL interfaces.
  • pretty-simple - Pretty printer for Haskell data types that have a Show instance.
  • Scalpel - High level web scraping library for Haskell.
  • ByteString - Fast, Packed Strings of Bytes.
  • in-other-words - Higher-order effect system where the sky's the limit.
  • prolens - Profunctor based lightweight implementation of Lenses.
  • stm - Software Transactional Memory.
  • stm-incremental - Exposes an interface for incremental computation using software transactional memory in Haskell.
  • Reanimate - Haskell library for building declarative animations based on SVG graphics.
  • Streamly - Beautiful Streaming, Concurrent and Reactive Composition.
  • poly - Fast polynomial arithmetic in Haskell.
  • jsonifier - Fast and simple JSON encoding toolkit.
  • Path - Support for well-typed paths in Haskell.
  • Yaya - Yet another yet another recursion scheme library in Haskell.
  • Happy - Parser generator for Haskell.
  • massiv - Efficient Haskell Arrays featuring Parallel computation.
  • json-to-haskell - In goes JSON, out comes Haskell.
  • unliftio - MonadUnliftIO typeclass for unlifting monads to IO.
  • json-autotype - Takes a JSON format input, and generates automatic Haskell type declarations.
  • domain - Focused domain model declaration toolkit for Haskell.
  • Synchron - Synchronous reactive concurrent programming DSL for Haskell.
  • microlens - Tiny part of the lens library with no dependencies.
  • Yoda - Small parser combinator library.
  • Conduit - Framework for dealing with streaming data.
  • store - Fast binary serialization in Haskell.
  • Earley - Parsing all context-free grammars using Earley's algorithm in Haskell.
  • algebra - Constructive abstract algebra in Haskell.
  • primitive - Provides various primitive memory-related operations for Haskell.
  • refined - Refinement types with static and runtime checking.
  • Row-Types - Haskell library for open records and variants using closed type families and type literals.
  • distributed-closure - Serializable closures for distributed programming.
  • hindent - Haskell pretty printer.
  • Katip - Structured logging framework for Haskell.
  • Linear base - Standard library for linear types in Haskell.
  • bifunctors - Haskell 98 bifunctors, bifoldables and bitraversables.
  • directory-contents - Recursively build a tree of directory contents, avoiding symlink cycles.
  • Foundation - Base foundational Haskell modules.
  • early - Add early return to any monad.
  • discrimination - Fast linear time sorting and discrimination for a large class of data types.
  • haskell-src - Library for manipulating Haskell source code.
  • Profunctors - Haskell 98 Profunctors.
  • MemoTrie - Functional library for creating efficient memo functions, using tries.
  • Kernmantle - Braiding extensible effects together in a pipeline/workflow of tasks.
  • essence-of-live-coding - General purpose and type safe live coding framework in Haskell. (Tutorial)
  • Higgledy - Higher-kinded data via generics.
  • hal - Runtime environment for Haskell applications running on AWS Lambda.
  • machines - Demand driven input sources like pipes or conduits, but can support multiple inputs.
  • refinery - Refinement proof framework for haskell.
  • linear-logic - Encodes a version of intuitionistic linear logic on top of linear Haskell.
  • Parsec - Monadic parser combinator library.
  • what-it-do - Automatically trace all (showable) binds in do expressions.
  • Pretty - Haskell Pretty-printer library.
  • Hypertypes - Generic programming for heterogeneous recursive types.
  • laop - Linear Algebra of Programming - Algebraic Matrices in Haskell.
  • Category-Syntax - Do-notation for Category and "Arrow without arr".
  • PariPari - Fast parser combinator library for Haskell.
  • Diagrams-Lib - Standard library for diagrams, a Haskell embedded domain-specific language for compositional, declarative drawing.
  • named - Named parameters (keyword arguments) for Haskell.
  • recursion-schemes - Represents common recursion patterns as higher-order functions.
  • QuickSpec - Equational laws for free.
  • What4 - Symbolic formula representation and solver interaction library.
  • foldl - Composable, streaming, and efficient left folds.
  • extensible - Extensible records, variants, structs, effects, tangles.
  • hint - Runtime Haskell interpreter.
  • volpano-smith - Compile-time privacy enforcing language embedded in Haskell.
  • Souffle-haskell - Haskell bindings for the Souffle datalog language.
  • stm-actor - Implementation of the actor model in Haskell using STM.
  • higher-order-unification - Small implementation of higher-order unification.
  • ghc-source-gen - Library for generating Haskell source files and code fragments.
  • computational-algebra - General-Purpose Computer Algebra System as an EDSL in Haskell.
  • spectacle - Embedded specification language & model checker in Haskell.
  • Hashable - Class for types that can be converted to a hash value.
  • effectful - Easy to use, performant extensible effects library with seamless integration with the existing Haskell ecosystem.
  • drama - Actor library for Haskell.
  • Wai-Routes - Micro web framework for Haskell that focuses on typesafe URLs.
  • Reactive-banana - Library for functional reactive programming in Haskell.
  • Cnoidal - Haskell library for representing, transforming, and live coding music.
  • Persistence - Topological data analysis library for Haskell.
  • predicate-typed - Refinement type library.
  • explainable-predicates - Predicates that can explain themselves.
  • json-syntax - High-performance JSON parser.
  • bytesmith - Parse bytes fast.
  • blanks - Fill-in-the-blanks - A library factoring out substitution from ASTs.
  • cleff - Fast and concise extensible effects.
  • Albatross - Tool for compiling relatively efficient implementations of priority queues.
  • Haskell Protocol Buffers
  • validation-selective - Lightweight pure validation based on Applicative and Selective functors.
  • Display - Typeclass for user-facing output.
  • Witch - Convert values from one type into another.
  • haskell-lockfree - Collection of different packages for CAS based data structures.
  • attoparsec - Fast Haskell library for parsing ByteStrings.
  • uniplate - Haskell library for simple, concise and fast generic operations.
  • Weeder - Application to perform whole-program dead-code analysis.
  • Deli - Performance modeling tool, allowing you to understand and experiment with new designs.
  • Shpadoinkle - Programming model for declarative, high performance user interface. (Episode)
  • structure-kit - Immutable data structures for all kinds of purposes.
  • Casimir - Algebraic Effects in Haskell using Implicit Parameters.
  • lifted-async - Run lifted IO operations asynchronously and wait for their results.
  • Autodocodec - Self(auto)- documenting encoder and decoder.
  • Vinyl - Extensible Records for Haskell.
  • constraints-extras - Convenience functions and template haskell for working with constraints.
  • some - Defines several versions of an existential type 'Some'.
  • rio - Standard library for Haskell.
  • vector - Efficient implementation of Int-indexed arrays (both mutable and immutable), with a powerful loop optimization framework.
  • dejafu - Systematic concurrency testing meets Haskell.
  • Random - Random number library.
  • G2 - Haskell Symbolic Execution Engine.
  • Frames - Data Frames for Haskell.
  • fuzzyfind - Haskell library for fuzzy text search.
  • aeson-typescript - Generate TypeScript definition files from your ADTs.
  • MissingH - Collection of Haskell-related utilities.
  • buffer-builder - Haskell library for efficiently building up buffers.
  • nonempty-containers - Efficient non-empty variants of containers data types, with full API.
  • Beseder - Library for typesafe state machines.
  • Yampa - Functional Reactive Programming domain-specific language for efficient hybrid systems.
  • Dunai - Classic FRP, Arrowized FRP, Reactive Programming, and Stream Programming, all via Monadic Stream Functions.
  • order - Exploring order-theory in Haskell.
  • replace-megaparsec - Stream editing with Haskell Megaparsec parsers.
  • Oath - Composable Concurrent Computation Done Right.
  • sexpresso - Flexible Haskell library for parsing and printing S-Expressions.
  • cassava - CSV parsing and encoding library optimized for ease of use and high performance.
  • one-liner - Constraint-based generics.
  • data-category - Library of categories, with categorical constructions on them.
  • free-functors - Provides free functors that are adjoint to functors that forget class constraints.
  • hashtables - Mutable hash tables for Haskell, in the ST monad.
  • avail - Low-overhead effect management for concrete monads.
  • fakedata - Haskell Library for producing quality fake data.
  • rure - Haskell bindings to Rust's regex library.
  • heidi - Tidy data in Haskell.
  • Clash Protocols - Battery-included library for writing on-chip protocols, such as AMBA AXI and Altera Avalon.
  • range-set-list - Memory efficient sets with continuous ranges of elements. List based implementation.
  • generics-sop - Generic Programming using True Sums of Products.
  • linear-builder - Linear types for linear times.
  • AT - Effective Algebraic Topology in Haskell.
  • debugger-hs - Write your GDB scripts in Haskell.
  • c2hs - Pre-processor for Haskell FFI bindings to C libraries.
  • bytestring-trie - Efficient finite map from (byte)strings to values.
  • unification-fd - Generic functions for single-sorted first-order structural unification.
  • monoidal-containers - Maps using values' monoidal structure during merging.
  • Chronos - Haskell time library focusing on performance.
  • fastsum - Fast open-union type, suitable for 100+ contained alternatives.
  • co-log - Flexible and configurable modern Haskell logging framework.
  • co-log-core - Core types and functions that power the Haskell co-log implementation.
  • shellmet - Out of the shell solution for scripting in Haskell.
  • summer - Extensible sums and products for Haskell.
  • fresnel - High-powered optics in a small package.
  • pinch - Serialization library for Haskell that provides support for Apache Thrift.
  • gRPC-haskell - Haskell gRPC support.
  • Liquid Fixpoint - Horn Clause Constraint Solving for Liquid Types.
  • time - Haskell time library.
  • unix - POSIX functionality.
  • Functional Graph Library
  • objective - Purely functional objects.
  • boomerang - Library which provides invertible parsing and printing.
  • mustache - Haskell implementation of mustache templates.
  • Flow - Write more understandable Haskell.
  • parameterized-utils - Utilities for using indexed types including containers, equality, and comparison.
  • hkd - Higher-kinded data.
  • Language-ecmascript - Haskell library for parsing, transforming and pretty-printing JavaScript.
  • sparkle - Apache Spark applications in Haskell.
  • eliminators - Dependently typed elimination functions using singletons.
  • typed-process - Alternative API for processes, featuring more type safety.
  • text - Library for space- and time-efficient operations over Unicode text.
  • eff - Implementation of an extensible effect system for Haskell. (Effect semantics zoo) (Reddit)
  • Scalable records - Library to support efficient compilation of large records (linear in the number of record fields). (Article)
  • record-dot-preprocessor - Preprocessor for a Haskell record syntax using dot.
  • HasCal - Haskell embedding of PlusCal.
  • semirings - Semirings and *-semirings of types in base/haskell-platform.
  • Generic Boltzmann Brain - Template Haskell library which allows its users to automatically generate efficient multi-parametric analytic Boltzmann samplers for algebraic data types.
  • These - Either-or-both data type, with corresponding hybrid error/writer monad transformer.
  • Prettyprinter - Modern, extensible and well-documented prettyprinter.
  • perfect-vector-shuffle - Library for performing shuffles on vectors.
  • cron - Cron data structure and parser for Haskell.
  • schematic - Type-safe JSON spec and validation tool.
  • configurant - Haskell library for loading configuation data from environment variables.
  • hfsnotify - Unified Haskell interface for basic file system notifications.
  • type-eq - Type equality evidence you can carry around.
  • hoopl - Higher-order optimization library.
  • Zip - Efficient library for manipulating zip archives.
  • hermes - Haskell library for fast, memory-efficient decoding of JSON documents using the simdjson C++ library.
  • inline-c
  • pretty-show - Tools for working with derived Show instances in Haskell.
  • Chapelure - Diagnostic library for Haskell.
  • mtl - Monad Transformer Library.
  • doctemplates - Text templating system used by pandoc.
  • Diagnose - Simple library for reporting compiler/interpreter errors.
  • list-transformer - List monad transformer.
  • Shelly - Haskell shell scripting.
  • binary - Efficient, pure binary serialisation using ByteStrings in Haskell.
  • configurator - Haskell library supporting flexible, dynamic file-based configuration.
  • deepseq - Deep evaluation of data structures.
  • binary-parser - Highly-efficient but limited parser API specialised for bytestrings.
  • aeson-quick - Haskell library for quick JSON extractions with Aeson.
  • NoRedInk Haskell libraries
  • fused-effects-th - Template Haskell helpers to avoid effect boilerplate.
  • record - Anonymous records.
  • transformers - Concrete functor and monad transformers.
  • Transformers-Base - Haskell library for lifting actions from the bottom of a monad transformer stack.
  • Registry - Components as records of functions for Haskell.
  • SuperRecord - Supercharged anonymous records.
  • free-accelerate - Data parallel representation for free monads.
  • mason - Builder & IO library.

Notes