Skip to content

A collection of awesome Purescript libraries, resources and shiny things.

License

Notifications You must be signed in to change notification settings

rowtype-yoga/awesome-purescript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Purescript《ミ》Awesome

A collection of awesome Purescript libraries, resources and shiny things.

Contents

Essential tools

Essential libraries

  • prelude - The basic prelude.
  • effect - Native side effects (equivalent to IO in Haskell).
  • aff - Asynchronous effects.
  • maybe - Optional values.
  • either - Commonly used for error handling.
  • arrays - JavaScript arrays.
  • transformers - Monad transnformers ReaderT, StateT, MaybeT, etc (equivalent to mtl in Haskell).
  • exists - Encodes existential types.

Documentation, references and tutorials

  • PureScript: Jordan's Reference - A comprehensive reference for the PureScript language and its idioms, ranging from total beginner to advanced topics.
  • PureScript by Example - A short but dense book from the creator of PureScript (with excercises).
  • PureScript Cookbook - A collection of simple self-contained examples covering common front-end, back-end and CLI tasks in PureScript.

Data types

  • ordered-collections - Ordered Maps and Sets.
  • unordered-collections - Hash-based immutable Maps and Sets.
  • lists - Linked lists.
  • fast-vect - Fast, type-safe vector libary for Purescript inspired by Idris. A vector is list with its size encoded in the type.
  • tree-rose - Tree zippers.
  • 📀 record-studio - Working with records made easy.
  • 🎄 yoga-tree - A data type for representing trees with arbitrary number of children and handy zippers.
  • 🕉️ yoga-om - A powerful general purpose type for writing applications. Includes dependency injection via Reader, error Variants and of course Aff.
  • 💍 untagged-union - A data type for untagged unions.
  • 🔑 vault - A typed, persistent store for values of arbitrary types. This is a port of the Haskell Vault library by Heinrich Apfelmus.
  • ❄️ unique - Abstract unique objects.

Maths

  • js-bigints - FFI bindings for JavaScript's BigInt. Does not require external js libraries.
  • rationals - Rational numbers.

Random

  • random - A basic library to generate random numbers.
  • gen - A type class for random generator implementations.
  • generate-values - An instance for gen and additional functions.

Lenses

  • profunctor-lenses - A mechanism for updating, viewing, and setting values within nested data structures.
  • barlow-lens - Barlow lens makes creating complex lenses such as record lenses super simple.
  • tidy-codegen-lens - Generate lenses and prisms for your data types automatically.

Http

Http client

  • fetch - High-level library for the WHATWG Fetch Living Standard.

Http server

  • httpurple - A functional http server with a focus on type-safety and making the common case easy.

Http routing

  • routing-duplex - Simple bidirectional parser/printers for your routing data types.

GraphQL

Json

  • yoga-json - Light-weight Json parser.
  • argonaut - A collection of libraries for working with JSON in PureScript.
  • json-codecs - A bidirectional and unidirectional value-based and runtime-configurable typeclass-based JSON codec library.

UI

React

Halogen

  • halogen - A declarative, component-based library entirely written in purescript.

Elmish

  • elmish - An ELM inspired framework (TEA) built on react.

Deku

  • deku - A FRP web framework for apps that need to be fast. Have a nice documentation.

Web

CSS

  • tecton - Domain-specific language for authoring CSS.

Collaborative editing

  • yjs - Purescript FFI bindings for yjs.
  • 🚰 tiptap - Purescript FFI bindings for tiptap.

Databases

Testing

  • spec - A testing framework, inspired by hspec.
  • quickcheck - An implementation of QuickCheck in PureScript.
  • assert - Basic assertions library for low level testing.

Benchmark

  • minibench - A minimal benchmarking library.

FFI

  • 🦥 lazy-joe - Purescript ffi for the lazy joe.
  • js-objects - Access js object methods and properties without writing JS bindings.

IDEs

Organisations

The following organisations are the best entry points when looking for libraries (many of the libraries in this list come from these orgs):

About

A collection of awesome Purescript libraries, resources and shiny things.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published