awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
purescript avatar

purescript/purescript

0
View on GitHub↗
8,832 stars·569 forks·Haskell·other·17 viewswww.purescript.org↗

Purescript

PureScript is a statically typed, purely functional programming language that compiles to JavaScript. It is designed as a cross-platform frontend language for building safe web applications, utilizing a static type system and a JavaScript compiler to ensure program correctness across browser and server environments.

The language is distinguished by its emphasis on mathematical purity, featuring a robust type system with first-class support for monads. It provides a sophisticated toolset for static verification, including algebraic data types, type classes, and automatic type inference to reject inconsistent behavior at compile time.

Its broader capabilities include support for monadic effect encapsulation, row polymorphic record matching, and a foreign-function interface for interoperability with JavaScript. The ecosystem also covers generative property-based testing, monadic state management, and the construction of domain-specific languages.

The project includes a centralized database for discovering library specifications and technical documentation.

Features

  • Cross-Platform Frontend Languages - Functions as a statically typed language used to build safe web applications by targeting JavaScript.
  • JavaScript Code Generation - Translates a strongly typed intermediate representation into executable JavaScript for web and server environments.
  • JavaScript Compilers - Translates strongly typed functional code into compatible JavaScript for execution in browsers and servers.
  • Statically Typed Languages - Implements a statically typed system that verifies program correctness and rejects invalid types at compile-time.
  • Foreign Type Wrappers - Represents complex or custom JavaScript types across the interface using wrapper functions and explicit declarations.
  • Algebraic Data Types - Uses sums of constructors and product types to model data with precise variants and shapes.
  • Automatic Type Deduction - Determines expression types automatically to reduce explicit annotations while maintaining static safety.
  • Compile-Time Correctness Verification - Analyzes code at compile-time to ensure adherence to type rules and reject inconsistent behavior.
  • Compile-Time Type Constraints - Provides language constructs to restrict generic parameters to specific type class instances during compilation.
  • Compilation Pipeline Safety - Transforms strongly typed source code into compatible JavaScript while preserving type safety across environments.
  • Domain Specific Languages - Allows the construction of specialized types and functions to create domain-specific languages for valid data structures.
  • External Value Imports - Allows assigning types to existing JavaScript values and functions via import declarations for type-safe usage.
  • Foreign Function Interfaces - Maps internal type declarations to external JavaScript values and functions for cross-environment interoperability.
  • Foreign Module Interoperability - Enables the import of values and functions from external modules through foreign declarations and standard exports.
  • Partial Application - Supports the creation of new functions by pre-filling a subset of a curried function's arguments.
  • Function Currying - Supports the execution of curried JavaScript functions by applying arguments sequentially.
  • Source-to-JavaScript Transpilers - Translates a strongly typed functional source language into executable JavaScript.
  • Pattern Matching - Defines function behavior by matching input arguments against specific patterns or guards.
  • Sum Types - Allows the creation of custom types as sums of constructors to model data with precise variants.
  • Monad Transformer Stacks - Supports stacking monad transformers to create contexts that simultaneously handle state, logging, and errors.
  • Monadic Sequential Composition - Chains monadic operations using do-notation to write sequential steps that depend on previous results.
  • Parametric Polymorphism - Defines functions that operate across any type while maintaining constraints between inputs and outputs.
  • Purely Functional Languages - Implements a language designed for mathematical purity with a robust type system and first-class monads.
  • Reader Monad Environment Access - Provides access to a read-only environment across a computation without explicitly passing it through every function.
  • Strongly-Typed Languages - Implements a rigorous type system that catches logic errors at compile time to ensure program correctness.
  • Type Classes - Provides type classes to define shared interfaces and generic abstractions for different data types.
  • Advanced Type Systems - Utilizes type classes and parametric polymorphism to build generic and reusable architectural abstractions.
  • Asynchronous Execution - Implements programming patterns that enable non-blocking operations and parallel task processing.
  • Functional Programming - Employs pure functions, algebraic data types, and composition to ensure software correctness and maintainability.
  • Monadic State Modeling - Tracks and updates values throughout a computation using a purely functional state management approach.
  • Linear Syntax Handlers - Offers a dedicated handler system to organize asynchronous tasks with a clean, linear syntax.
  • Correctness by Construction - Employs smart constructors and hidden representations to ensure that only valid values can be instantiated.
  • Monadic Error Handling - Utilizes container types like Maybe and Either to manage failures as pure data rather than using native exceptions.
  • Function Composition - Provides operators to chain multiple small functions together to build complex logic from simple blocks.
  • Optional Value Types - Provides a type-safe representation of values that may be absent to eliminate null-pointer errors.
  • Side Effect Handlers - Encapsulates side-effects like console and random number generation within dedicated handlers.
  • Type-Safe Web Frameworks - Provides a type-safe environment for web development that compiles to JavaScript for browser and server use.
  • Pattern Guards - Adds boolean expressions to patterns to impose extra constraints before a specific case executes.
  • Fixed-Length Array Pattern Matching - Identifies arrays of a specific length and binds their elements to names within a function.
  • Object Property Accessors - Provides dot notation and accessor functions for extracting nested fields from records.
  • Parallel Execution - Supports executing multiple asynchronous tasks concurrently to improve total processing time.
  • Array Flattening Utilities - Provides capabilities to collapse arrays of arrays into a single flat array structure.
  • Array Mapping Functions - Provides a map function to apply transformations to every element of an array to produce a new array.
  • Automatic Instance Generation - Allows the compiler to automatically derive type class instances for data types.
  • Container Mapping - Transforms elements of a container into a new type while preserving the original data structure shape.
  • Custom Infix Operators - Allows the creation of custom function aliases to be used as infix operators with specific precedence.
  • Effectful Computation Merging - Transforms collections of wrapped values into a single wrapped collection by merging their side-effects.
  • Effectful Mapping - Implements the ability to apply side-effect producing functions across data structures using monadic mapping.
  • Free Monad Interpretation - Uses free monads to define actions as data, allowing different interpreters to execute them.
  • Nested - Combines arrays and records into deeply nested structures to match complex data shapes.
  • Row Polymorphic Matching - Extracts values from records based on specific fields while remaining compatible with additional data fields.
  • Asynchronous Error Handling - Captures exceptions during asynchronous execution flows and stores them in typed result structures.
  • Arbitrary Data Generation - Provides tools for creating random instances of specific data types for property-based testing.
  • Deterministic Random Data Generation - Uses arbitrary and coarbitrary type classes to create deterministic random inputs for property-based testing.
  • Monadic Action Interpretation - Transforms a defined sequence of monadic actions into a final output via an interpreter function.
  • Monadic Folding - Generalizes standard list folding to support side-effects during the accumulation of a result.
  • Monadic List Comprehensions - Provides block syntax to bind elements and apply guards for concise array construction.
  • Non-Deterministic Computation - Uses the array monad to explore multiple execution paths and return all valid results.
  • Pattern Bindings - Assigns names to matched patterns to reference the entire structure while destructuring components.
  • Array Filtering Methods - Ships standard library methods for generating new arrays by filtering elements based on a predicate function.
  • Array Folding Functions - Provides folding operations to reduce containers of values into a single result using an accumulator.
  • Runtime Exception Handling - Wraps effectful computations to convert native runtime exceptions into strongly typed error values.
  • Tail-Call Optimizations - Implements compiler optimizations that reuse stack frames for recursive calls in the final position to prevent stack overflows.
  • Newtypes - Provides newtype wrappers to give distinct type identities to existing types without incurring runtime costs.
  • Multi-Parameter - Implements multi-parameter type classes to define relationships between multiple different types.
  • Domain Type Definitions - Allows creating type synonyms for records and lists to represent domain concepts with specific names.
  • Inline Case Analysis - Matches intermediate values within a computation using case expressions to avoid creating separate functions.
  • Error Accumulators - Implements applicative functors to accumulate multiple validation errors instead of failing on the first encounter.
  • Validation Error Aggregators - Provides mechanisms to aggregate all failures across multiple validation checks into a single collection.
  • Case-Based Definitions - Pairs sets of conditions with results using pattern matching to define functions as declarative alternatives.
  • Mutation Isolation - Allows modifying mutable reference cells within restricted regions to ensure the overall function remains pure.
  • Type Hierarchies - Supports the definition of superclass relationships to ensure interface implementations satisfy base requirements.
  • Deterministic Pure Testing - Enables reproducible generative tests by utilizing fixed seeds and specific case counts.
  • Property-Based Fuzzing - Implements property-based testing to validate code invariants by generating random test data.
  • Generative Testing - Provides generative testing capabilities to validate code properties by attempting to disprove invariants with random data.
  • Type-Safe API Integrations - Provides tools for mapping JavaScript functions and JSON data into type-safe internal representations to prevent runtime integration errors.
  • Editor and IDE Plugins - Listed in the “Editor and IDE Plugins” section of the Awesome Purescript awesome list.
  • More to explore - Strongly-typed language compiling to JavaScript.

Star history

Star history chart for purescript/purescriptStar history chart for purescript/purescript

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Purescript

Similar open-source projects, ranked by how many features they share with Purescript.
  • elm/compilerelm avatar

    elm/compiler

    7,794View on GitHub↗

    This project is a functional programming compiler and JavaScript transpiler that transforms a statically typed language into optimized JavaScript for web browsers. It serves as a frontend architecture framework, providing a static type system and a package manager that enforces semantic versioning. The compiler uses a type-checking engine with automatic type inference to prevent runtime errors and guide code refactoring. It implements a structural pattern for managing application state and rendering user interfaces through a virtual DOM, utilizing immutable data and purity-based state transit

    Haskellcompilerelm
    View on GitHub↗7,794
  • reasonml/reasonreasonml avatar

    reasonml/reason

    10,313View on GitHub↗

    Reason is a strongly typed functional language and multi-target compiler designed to produce either JavaScript for web environments or native machine code for operating systems. It serves as an OCaml-compatible language that shares an abstract syntax tree with OCaml, providing a practical syntax for the OCaml ecosystem. The project functions as a type-safe frontend language, incorporating JSX support to build user interfaces through structural elements that translate into type-safe function calls. It enables deep integration with the JavaScript ecosystem, allowing the use of existing librarie

    OCamljavascriptocamlprogramming-language
    View on GitHub↗10,313
  • gcanti/fp-tsgcanti avatar

    gcanti/fp-ts

    11,523View on GitHub↗

    fp-ts is a TypeScript library that brings pure functional programming patterns to the language through algebraic data types, type class abstractions, and composable combinators. It provides foundational data types like Option for optional values, Either for typed error handling, and Task for lazy asynchronous computations, all designed to make invalid states unrepresentable and side effects explicit. The library is built on category theory concepts, offering type classes such as Functor, Applicative, Monad, Semigroup, and Monoid with lawful instances for common data structures. The library di

    TypeScriptalgebraic-data-typesfunctional-programmingtypescript
    View on GitHub↗11,523
  • typelevel/catstypelevel avatar

    typelevel/cats

    5,447View on GitHub↗

    Cats is a Scala functional programming library and type class library designed to implement algebraic patterns and functional abstractions. It provides a standardized set of interfaces and a modular toolkit of functional wrappers and containers to enable ad-hoc polymorphism and generic programming across disparate types. The project serves as a functional abstraction standard, offering a monad transformer suite to compose nested effectful contexts and handle multiple computational side effects within a single pipeline. It further enables the construction of embedded domain-specific languages

    Scala
    View on GitHub↗5,447
See all 30 alternatives to Purescript→

Frequently asked questions

What does purescript/purescript do?

PureScript is a statically typed, purely functional programming language that compiles to JavaScript. It is designed as a cross-platform frontend language for building safe web applications, utilizing a static type system and a JavaScript compiler to ensure program correctness across browser and server environments.

What are the main features of purescript/purescript?

The main features of purescript/purescript are: Cross-Platform Frontend Languages, JavaScript Code Generation, JavaScript Compilers, Statically Typed Languages, Foreign Type Wrappers, Algebraic Data Types, Automatic Type Deduction, Compile-Time Correctness Verification.

What are some open-source alternatives to purescript/purescript?

Open-source alternatives to purescript/purescript include: elm/compiler — This project is a functional programming compiler and JavaScript transpiler that transforms a statically typed… reasonml/reason — Reason is a strongly typed functional language and multi-target compiler designed to produce either JavaScript for web… gcanti/fp-ts — fp-ts is a TypeScript library that brings pure functional programming patterns to the language through algebraic data… typelevel/cats — Cats is a Scala functional programming library and type class library designed to implement algebraic patterns and… carp-lang/carp — Carp is a statically typed Lisp compiler that compiles Lisp-like syntax directly to C source code, enabling seamless… frege/frege — Frege is a purely functional programming language that compiles to JVM bytecode, providing Haskell-like semantics for…