awesome-repositories.com
Blog
awesome-repositories.com

Découvrez les meilleurs dépôts open-source grâce à notre recherche par IA.

ExplorerRecherches sélectionnéesAlternatives open sourceLogiciels auto-hébergésBlogPlan du site
ProjetÀ proposNotre méthodologiePresseServeur MCP
Mentions légalesConfidentialitéConditions d'utilisation
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
Frege avatar

Frege/frege

0
View on GitHub↗
3,700 stars·149 forks·Frege·4 vuesgithub.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.

Historique des stars

Graphique de l'historique des stars pour frege/fregeGraphique de l'historique des stars pour frege/frege

Recherche par IA

Explorez plus de dépôts awesome

Décrivez vos besoins en langage naturel — l'IA classe des milliers de projets open source sélectionnés par pertinence.

Start searching with AI

Alternatives open source à Frege

Projets open source similaires, classés selon le nombre de fonctionnalités partagées avec Frege.
  • reasonml/reasonAvatar de reasonml

    reasonml/reason

    10,313Voir sur 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
    Voir sur GitHub↗10,313
  • elm/compilerAvatar de elm

    elm/compiler

    7,794Voir sur 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
    Voir sur GitHub↗7,794
  • purescript/purescriptAvatar de purescript

    purescript/purescript

    8,832Voir sur 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
    Voir sur GitHub↗8,832
  • dotnet/fsharpD

    dotnet/fsharp

    4,308Voir sur 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#
    Voir sur GitHub↗4,308
Voir les 30 alternatives à Frege→

Questions fréquentes

Que fait frege/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.

Quelles sont les fonctionnalités principales de frege/frege ?

Les fonctionnalités principales de frege/frege sont : Source-to-Bytecode Compilers, Functional Programming Compilers, JVM Bytecode Compilers, JVM Type Mappings, Java Library Integrations, Algebraic Data Types, Automatic Type Inferences, Lazy Evaluation.

Quelles sont les alternatives open-source à frege/frege ?

Les alternatives open-source à frege/frege incluent : 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…