An experimental compiler that translates F# code to Core Erlang, enabling F# programs to run on the BEAM virtual machine.
FEZ is an early-stage experiment that compiles F# code to Core Erlang, enabling F# programs to run on the BEAM virtual machine used by Erlang and Elixir. It aims to evaluate the feasibility of using an ML-style language like F# for BEAM-based development, potentially leading to a full-featured F# backend.
F# developers interested in exploring BEAM ecosystem compatibility or Erlang/Elixir developers seeking to leverage F#'s functional and multi-paradigm features within the BEAM environment.
Developers choose FEZ to bridge F#'s robust functional programming constructs with BEAM's concurrent runtime, offering a unique path to run F# code on a platform known for fault tolerance and scalability, while providing Erlang interoperability through FFI capabilities.
F# to core erlang compiler experiment
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Fully implements key F# functional constructs like modules, functions, pattern matching, and discriminated unions, ensuring reliable functional programming on BEAM.
Provides FFI attributes such as ModCall and ErlangTerm for calling Erlang functions and generating compatible data encodings, facilitating integration with existing BEAM codebases.
Implements complete F# standard library modules like List and String, reducing the need for additional libraries and easing development.
Extends support to object-oriented features like member methods and interfaces, allowing developers to test F#'s full language spectrum on BEAM.
Many F# features, including arrays (unstarted), while loops (unstarted), and parts of async programming (partial), are not fully implemented, limiting practical application.
As an early experiment, FEZ lacks production readiness, with potential for compile-time or runtime errors in unsupported or prototype features like ref cells or computation expressions.
Sparse documentation and a small community make troubleshooting difficult, increasing the learning curve and risk for developers relying on this tool.