Frege is a Haskell-like purely functional programming language that compiles to Java and runs on the JVM.
Frege is a purely functional programming language for the JVM that closely resembles Haskell. It brings Haskell's strong static type system, lazy evaluation, and immutability to the Java platform, allowing developers to write robust, thread-safe code while seamlessly interoperating with Java libraries. The language compiles to Java bytecode and can be integrated into any Java project.
Java developers looking to learn functional programming or Haskell programmers wanting to apply their skills on the JVM. It's also suitable for teams seeking to introduce functional paradigms into existing Java codebases.
Frege offers a true Haskell-like experience on the JVM with excellent Java interoperability, unlike other JVM functional languages. It preserves Haskell's purity guarantees and type system while letting developers leverage the entire Java ecosystem, making it a practical bridge between functional and imperative worlds.
Frege is a Haskell for the JVM. It brings purely functional programing to the Java platform.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Frege compiles directly to Java bytecode and can call any Java library, enabling easy integration into existing Java projects as highlighted in the README.
Enforces immutability and tracks side effects through the type system, ensuring thread safety and enabling compiler optimizations, as demonstrated in the Hello World example.
Most idiomatic Haskell code runs with minimal changes, allowing developers to transfer skills and port libraries, making it a practical bridge to the JVM.
Includes a REPL, IDE plugins for Eclipse and VS Code, and build support for Maven and Gradle, facilitating development workflows as listed in the tooling section.
The README admits documentation is provisional, which can hinder learning and troubleshooting for new users.
As a less popular language, Frege has a smaller ecosystem with fewer third-party libraries and community resources compared to mainstream JVM alternatives.
Calling Java libraries requires explicit type declarations to preserve purity, adding complexity and verbosity to integration efforts.