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
Frege avatar

Frege/frege

0
View on GitHub↗
3,700 stars·149 forks·Frege·16 viewsgithub.com/Frege/frege/wiki/_pages↗

Frege

Frege is a purely functional programming language that compiles to JVM bytecode, providing Haskell-like semantics for the Java platform. It is built around a Haskell-inspired compiler that implements non-strict evaluation and a static type inference system to ensure data immutability and prevent side effects.

The project distinguishes itself through a sophisticated type system featuring rank polymorphism, type-class based dispatch, and static purity enforcement. It includes a JVM language bridge and a foreign function interface that map Java classes and interfaces into functional types, allowing functional logic to integrate directly with Java libraries.

The language environment covers a broad range of development capabilities, including an interactive REPL, language server protocol support, and property-based testing. Its toolchain handles automated build integration, bytecode optimization, and the generation of technical HTML documentation from embedded source comments.

Features

  • Source-to-Bytecode Compilers - Translates high-level functional source code into executable JVM bytecode using parallel processing.
  • Functional Programming Compilers - Provides a full-scale functional language compiler that transforms high-level syntax into executable bytecode.
  • JVM Bytecode Compilers - Translates functional source code into Java bytecode for execution on the Java Virtual Machine.
  • JVM Type Mappings - Converts JVM primitives, classes, and interfaces into abstract data types for runtime compatibility.
  • Java Library Integrations - Provides direct access to external Java types and methods using a foreign function interface.
  • Algebraic Data Types - Provides native support for algebraic data types, including sum and product types for complex data modeling.
  • Automatic Type Inferences - Automatically determines the most general types for expressions without requiring explicit annotations.
  • Lazy Evaluation - Implements non-strict evaluation, delaying computation of function arguments until their values are required.
  • Interactive Read-Eval-Print Loops - Provides an interactive environment for real-time evaluation of expressions and inspection of values.
  • Functional Toolchains - Provides a complete functional workflow including an interactive REPL, LSP support, and automated build integration.
  • Generic Types - Implements type-safe generic operations across different data types using a system of type classes.
  • Haskell-Inspired Compilers - Implements non-strict evaluation, rank polymorphism, and type classes while targeting a virtual machine.
  • Java Interoperability - Produces standard JVM class files to make functional logic accessible to any JVM language.
  • JVM Functional Languages - Brings purely functional programming and non-strict evaluation to the Java platform.
  • Language Bridges - Integrates functional logic with Java libraries through a language bridge and type mapping.
  • Higher-Rank Polymorphism - Supports universal quantification in type signatures to allow functions to accept other polymorphic functions.
  • Foreign Function Interfaces - Maps Java classes and interfaces into functional types to enable interoperability with external libraries.
  • Non-Strict Evaluation - Defers the computation of expressions until required to support infinite data structures.
  • Purely Functional Languages - Provides a purely functional language with Haskell-like semantics that compiles to JVM bytecode.
  • Static Type Inference - Implements a static type inference system that automatically determines variable types during compilation.
  • Strongly-Typed Languages - Uses a rigorous type system with static inference and rank polymorphism to catch errors at compile time.
  • Immutable Variable Enforcement - Enforces data immutability by preventing the reassignment of values to existing references.
  • Type Classes - Implements generic operations across data types using type classes and automatic instances.
  • Purity Annotations - Uses the type system to distinguish pure functions from side-effecting operations, ensuring thread safety.
  • Static Purity Enforcement - Uses the type system to strictly separate pure computations from side-effecting operations.
  • Build System Integration - Integrates the functional compiler into standard build tools to manage dependencies and lifecycles.
  • Build Plugin Integrations - Automates compilation and dependency management via plugins for common build systems.
  • Language Server Protocol Integrations - Offers language-aware features like autocomplete and navigation through a standard language server protocol.
  • Project-Aware REPLs - Provides a REPL that can execute functions and browse modules with access to project dependencies.
  • Instance Type Signatures - Provides explicit type signatures within instance declarations to ensure correctness through compiler checking.
  • Build Automation - Provides a dedicated build automation plugin to handle project compilation and library dependencies.
  • Incremental Recompilation - Analyzes module dependencies to perform recompilation only when source files or their dependencies change.
  • Bytecode Optimizers - Applies function inlining and bytecode refinements to increase the execution speed of the final program.
  • Binding Generalization - Controls the typing and optimization of local and top-level bindings to remove monomorphism restrictions.
  • Exhaustiveness Analysis - Analyzes code to ensure all possible variants of a type are handled in pattern matches.
  • Entry Point Definitions - Allows defining a main entry point for modules to process command line arguments and execute IO actions.
  • Immutable Record Updates - Provides built-in mechanisms for non-destructive updates to immutable records.
  • Match Guard Filtering - Provides pattern guards using boolean expressions to refine match arm triggers.
  • Liberalised Type Synonyms - Allows the right-hand side of a type definition to include universal quantification.
  • Module Namespace Mapping - Maps module names to a hierarchical structure that aligns with JVM class naming conventions.
  • Module Namespaces - Uses hierarchical naming systems to organize imported modules and prevent identifier collisions.
  • Rebindable Syntax - Implements rebindable syntax that translates syntactic sugar using functions currently in scope.
  • Isolated Record Fields - Uses data types as namespaces to prevent record field names from polluting the global namespace.
  • Type Class Hierarchy Simplification - Enables a single instance declaration to simultaneously satisfy a type and all its super-classes.
  • Type Error Diagnostics - Produces detailed diagnostic output from the type checker for specific line ranges to resolve mismatches.
  • Type Class Instance Derivations - Automatically generates type class implementations through derived declarations.
  • Property-Based Testing - Generates arbitrary test data to verify that logical properties hold true across a wide range of inputs.
  • Property Verification - Verifies software invariants hold true for all generated inputs using property-based verification.
  • Compilers and Interpreters - JVM-based compiler for Frege.
  • Programming Languages - Pure functional programming language in the spirit of Haskell.

Star history

Star history chart for frege/fregeStar history chart for frege/frege

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. 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

Frequently asked questions

What does frege/frege do?

Frege is a purely functional programming language that compiles to JVM bytecode, providing Haskell-like semantics for the Java platform. It is built around a Haskell-inspired compiler that implements non-strict evaluation and a static type inference system to ensure data immutability and prevent side effects.

What are the main features of frege/frege?

The main features of frege/frege are: Source-to-Bytecode Compilers, Functional Programming Compilers, JVM Bytecode Compilers, JVM Type Mappings, Java Library Integrations, Algebraic Data Types, Automatic Type Inferences, Lazy Evaluation.

Which projects share features with frege/frege?

Projects with overlapping indexed features include: reasonml/reason — Reason is a strongly typed functional language and multi-target compiler designed to produce either JavaScript for web… elm/compiler — This project is a functional programming compiler and JavaScript transpiler that transforms a statically typed… purescript/purescript — PureScript is a statically typed, purely functional programming language that compiles to JavaScript. It is designed… dotnet/fsharp — F# is a strongly typed, functional programming language and compiler for the .NET ecosystem. It transforms functional… clojure/clojure — Clojure is a general-purpose, functional programming language hosted on the Java Virtual Machine. It is a homoiconic… jruby/jruby — JRuby is a Ruby language implementation that runs on the Java Virtual Machine. It serves as a cross-language runtime…

Projects sharing features with Frege

These projects share indexed features with Frege. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • 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
  • 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
  • purescript/purescriptpurescript avatar

    purescript/purescript

    8,832View on GitHub↗

    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 reje

    Haskellalt-jshaskelljavascript
    View on GitHub↗8,832
  • dotnet/fsharpD

    dotnet/fsharp

    4,308View on GitHub↗

    F# is a strongly typed, functional programming language and compiler for the .NET ecosystem. It transforms functional source code into Common Intermediate Language for execution on the .NET runtime and provides a foundational core library of primitive types and functions. The language emphasizes immutability and uses a static, constraint-based type inference system to automatically determine variable types without requiring explicit user annotations. It also functions as a Language Server Protocol provider, exposing compiler logic through a service-based API to deliver real-time code analysis

    F#
    View on GitHub↗4,308
  • Compare all 30 related projects→