Variables and Constants

Free variables can be defined simply by giving them a name

#![allow(unused)]
fn main() {
let b = Free "b"
let r = Free "r"
let l = Free "l"
}

Constants are written with the constructor Bound. A node/baker constant is written by its name:

#![allow(unused)]
fn main() {
let b1 = Bound (N "b1")
}

There are smart constructors for level and round constants so that they can be written easily:

#![allow(unused)]
fn main() {
let l3 = level 3
let r0 = round 0
}

Info

Once a free variable is bound to a constant by matching, it is bound to this same constant for the rest of the scenario.

Catch-all variables are written by the constructor Any or simply (two underscore symbols):

#![allow(unused)]
fn main() {
__
}