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