Pattern Matching

Novum supports pattern-based binding and match expressions.

Wildcard

match value {
    _ => 0
}

Identifier pattern

match value {
    x => x
}

Literal patterns

match value {
    0 => "zero"
    1 => "one"
    _ => "other"
}

Tuple patterns

match pair {
    (x, y) => x + y
    _ => 0
}

Enum variant patterns

Unit variant:

match color {
    Color.Green => 1
    _ => 0
}

Payload variant:

match result {
    Result.Ok(value) => value
    Result.Err(message) => print(message)
}

Pattern parser support includes qualified enum paths such as Color.Green and payload patterns such as Result.Ok(value).

List patterns

List-pattern support is part of the current language implementation and is intended for destructuring list values. The exact accepted syntax should follow the parser/tests shipped with the current revision.