Flix in Five Minutes
|Paradigm||multi-paradigm: functional, logic|
|Typing discipline||static, strong, safe, nominative|
|Type inference||local Hindley-Milner|
|Type annotations||locally inferred, mandatory at top-level|
|Evaluation mode||compilation to bytecode + interpretation|
|Evaluation order||strict, call-by-value|
|Functions||pure (side-effect free), total|
|Fixedpoint Solver||bottom-up, parallel|
|Syntax inspired by||Scala, Python, OCaml, Datalog|
|Library inspired by||Scala, Haskell|
|Platform||Java / JVM 1.8+|
By design Flix does not, and probably never will, support the following features:
Programming languages, such as Java and C#, allows the special value
null to be assigned to any type.
This unfortunate design choice leads to code littered with
if (x == null) checks or runs the risk causing
NullPointerExceptions. Flix avoids this issue by requiring possible absent values to be represented by
Option data type.
Sub-Typing. Flix has powerful Hindley-Milner type inference, but not sub-typing.
Implicit Coercions. Flix does not automatically convert values between types. For example, integers are not silently converted to booleans or strings.