Skip to content

Latest commit

 

History

History
78 lines (64 loc) · 6.76 KB

File metadata and controls

78 lines (64 loc) · 6.76 KB

λ Building Apps in Haskell

We've built a lot of applications in Haskell, and along the way we've contributed lots of reusable parts to the Haskell ecosystem.

🖼️ Full-Stack Framework

  • obelisk: full-stack haskell applications

🖱️ GUIs

⌨️ TUIs & CLIs

  • reflex-vty: Build terminal apps with FRP
  • cli-extras: Tools for writing CLIs, including logging, process management, and printing to the terminal

🌍 Browser Extensions

🏗️ Infrastructure & Tools

  • reflex-platform: Nix tooling to build multi-platform Haskell apps
  • reflex-ghci: Run GHCi from within a Reflex FRP application and interact with it using a functional reactive interface.
  • gargoyle: A framework for managing daemons from Haskell and libraries for use with postgresql and nix
  • openapi-hs-generator: Nix wrapper for the openapi generator CLI tool to automatically generate haskell bindngs from openapi specifications.

🧑‍🏫 Examples

📚 Libraries

🐚 Shell and Filesystem interaction

  • reflex-process: Run and interact with system processes from within a Reflex FRP application.
  • reflex-fsnotify: Watch files and directories for changes using a functional-reactive interface
  • directory-contents: Recursively build a tree of directory contents, avoiding symlink cycles
  • coquina: A very convenient shell command monad
  • which: Like the linux which command, to bake in the path to an executable

💾 Database

  • beam-automigrate: Automatically generated migrations for beam databases
  • gargoyle-postgresql: tools for managing PostgreSQL servers that can live in local folders and communicate via a Unix domain socket or be run remotely
  • postgresql-lo-stream: Library for streaming large objects to and from PostgreSQL in Haskell

📡 API

  • reflex-gadt-api: Interact with a JSON-serialized API defined by a GADT in your reflex-dom application
  • snap-stream: Snap handlers for streaming access with range requests

📱 Cross-platform

  • obelisk-ios-libfrontend: Compile your obelisk frontend as a C library that can be used with an XCode project.
  • android-activity: embed a haskell application in an android app as an Android Activity.

🧬 Datastructures

  • patch: Data structures for describing changes to other data structures.
  • dependent-sum-template: Template Haskell code to generate instances of classes found in the some package
  • commutative-semigroups: Semigroup where the order of arguments to mappend does not matter
  • constraints-extras: Convenience functions for working with constraints
  • dependent-sum: Dependent sums and supporting typeclasses for comparing and displaying them
  • dependent-map: Dependently-typed finite maps (partial dependent products)
  • vessel 🍶: Functor-parametric containers
  • aeson-gadt-th: Template Haskell for generating ToJSON and FromJSON instances for GADTs
  • higher-kinded: Higher kinded data types
  • agate: Petri nets, ordinary differential equations and dynamical systems

🪝 Integrations