1. 1. Introduction to Flix
  2. 2. Getting Started
    1. 2.1. Hello World!
    2. 2.2. Next Steps
  3. 3. Data Types
    1. 3.1. Primitives
    2. 3.2. Tuples
    3. 3.3. Enums
    4. 3.4. Type Aliases
  4. 4. Functions
  5. 5. Immutable Data
    1. 5.1. Lists
    2. 5.2. Chains and Vectors
    3. 5.3. Sets and Maps
    4. 5.4. Records
  6. 6. Mutable Data
    1. 6.1. Regions
    2. 6.2. References
    3. 6.3. Arrays
    4. 6.4. Structs
    5. 6.5. Collections
  7. 7. Control Structures
    1. 7.1. If-Then-Else
    2. 7.2. Pattern Matching
    3. 7.3. Foreach
    4. 7.4. Foreach-Yield
    5. 7.5. Monadic For-Yield
    6. 7.6. Applicative For-Yield
  8. 8. Effect System
    1. 8.1. Primitive Effects
    2. 8.2. Effect Polymorphism
    3. 8.3. Effects and Handlers
    4. 8.4. Library Effects
    5. 8.5. Effect-Oriented Programming
  9. 9. Modules
    1. 9.1. Declaring Modules
    2. 9.2. Using Modules
    3. 9.3. Companion Modules
  10. 10. Traits
    1. 10.1. Essential Traits
    2. 10.2. Automatic Derivation
    3. 10.3. Associated Types
    4. 10.4. Associated Effects
    5. 10.5. Higher-Kinded Types
  11. 11. Structured Concurrency
  12. 12. Parallelism
  13. 13. Interoperability with Java
    1. 13.1. Creating Objects
    2. 13.2. Calling Methods
    3. 13.3. Reading and Writing Fields
    4. 13.4. Classes and Interfaces
    5. 13.5. Nested and Inner Classes
    6. 13.6. Exceptions
    7. 13.7. Boxing and Unboxing
    8. 13.8. Java Collections
  14. 14. Fixpoints
    1. 14.1. Stratified Negation
    2. 14.2. Local Predicates
    3. 14.3. Functional Predicates
    4. 14.4. Lattice Semantics
  15. 15. Everyday Programming
    1. 15.1. The Main Function
    2. 15.2. Printing to Standard Out
    3. 15.3. String Interpolation
    4. 15.4. Tail Recursion
    5. 15.5. Anonymous and Named Holes
    6. 15.6. Type Ascriptions
    7. 15.7. Redundancy
    8. 15.8. Debugging
  16. 16. Tools
    1. 16.1. Visual Studio Code
    2. 16.2. Test Framework
  17. 17. Build and Packages
    1. 17.1. Build
    2. 17.2. Packages
    3. 17.3. Publish
    4. 17.4. Outdated
  18. 18. Advanced Features
    1. 18.1. Checked Casts
    2. 18.2. Unchecked Casts
    3. 18.3. Bugs and Unreachable Code
    4. 18.4. Laziness
    5. 18.5. Type Match
    6. 18.6. Purity Reflection
    7. 18.7. Type-Level Programming
  19. 19. Common Problems
  20. 20. Frequently Asked Questions
  21. 21. Glossary
  22. 22. Additional Information
    1. 22.1. Research Literature
    2. 22.2. Blog Posts
    3. 22.3. Videos
  23. 23. Appendix
    1. 23.1. Legal Identifiers
    2. 23.2. Operator Precedence

Programming Flix

Research Literature

The following research papers cover specific aspects of Flix:

  • The Principles of the Flix Programming Language
  • Flix: A Meta Programming Language for Datalog
  • Relational Nullable Types with Boolean Unification
  • Fixpoints for the Masses: Programming with First-Class Datalog Constraints
  • Polymorphic Types and Effects with Boolean Unification
  • Implicit Parameters for Logic Programming
  • Safe and Sound Program Analysis with Flix
  • Tail Call Elimination and Data Representation for Functional Languages on the Java Virtual Machine
  • From Datalog to Flix: A Declarative Language for Fixed Points on Lattices
  • Programming a Dataflow Analysis in Flix