https://github.com/flix/flix
The Flix Programming Language
https://github.com/flix/flix
flix functional hacktoberfest imperative jvm language logic programming-language
Last synced: 12 days ago
JSON representation
The Flix Programming Language
- Host: GitHub
- URL: https://github.com/flix/flix
- Owner: flix
- License: other
- Created: 2015-06-12T03:20:35.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2026-01-30T20:33:44.000Z (14 days ago)
- Last Synced: 2026-01-31T12:32:55.791Z (13 days ago)
- Topics: flix, functional, hacktoberfest, imperative, jvm, language, logic, programming-language
- Language: Flix
- Homepage: https://flix.dev/
- Size: 125 MB
- Stars: 2,579
- Watchers: 23
- Forks: 177
- Open Issues: 690
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE.md
- Authors: AUTHORS.md
Awesome Lists containing this project
- awesome-programming-languages - Flix - Next-generation reliable, safe, concise, and functional-first programming language. Flix is a principled functional, imperative, and logic programming language developed at Aarhus University, at the University of Waterloo, and by a community of open source contributors. Flix is inspired by OCaml and Haskell with ideas from Rust and Scala. Flix looks like Scala, but its type system is based on Hindley-Milner. Two unique features of Flix are its polymorphic effect system and its support for first-class Datalog constraints. Flix compiles JVM bytecode, runs on the Java Virtual Machine, and supports full tail call elimination. A VSCode plugin for Flix is available. (Uncategorized / Uncategorized)
- awesome-repositories - flix/flix - The Flix Programming Language (Flix)
- awesome-java - Flix
- programming-languages - Flix - Statically typed functional- and logic programming language inspired by Scala, OCaml, F#, Haskell, and Datalog. ([Web](https://flix.dev/)) (Functional)
- awesome - flix/flix - The Flix Programming Language (<a name="Flix"></a>Flix)
README
**Flix** is a statically typed functional, imperative, and logic programming language.
We refer you to the [official Flix website (flix.dev)](https://flix.dev/) for more information about Flix.
[](https://gitter.im/flix/Lobby)
## Example
```flix
///
/// The expressions of the lambda calculus are: variables, lambda abstractions, and applications.
///
enum Expression {
// A variable expression. A variable is represented by an integer.
case Var(Int32),
// A lambda abstracation expression. A variable is represented by an integer.
case Abs(Int32, Expression),
// A function application expression.
case App(Expression, Expression),
}
///
/// Performs alpha conversion by introducing fresh variables for all variables in the given expression `e0`.
///
def alpha(e0: Expression, m: Map[Int32, Int32]): Expression = match e0 {
case Var(x) =>
// Check if we need to rename the variable.
match Map.get(x, m) {
case None => Var(x)
case Some(y) => Var(y)
}
case Abs(x, e) =>
// Generate a fresh variable name for `x`.
let y = freshVar();
Abs(y, alpha(e, Map.insert(x, y, m)))
case App(e1, e2) =>
// Recursively perform alpha conversion on each expression.
App(alpha(e1, m), alpha(e2, m))
}
```
## Building
See [docs/BUILD.md](docs/BUILD.md).
## License
Flix is available under the Apache 2.0 license.
## Sponsors
We kindly thank [EJ Technologies](https://www.ej-technologies.com/) for providing us with
[JProfiler](http://www.ej-technologies.com/products/jprofiler/overview.html)
and [JetBrains](https://www.jetbrains.com/) for providing us with
[IntelliJ IDEA](https://www.jetbrains.com/idea/).