Patterns

Patterns can be used to deconstruct values and bind their constituents with variables.

Pattern ::=
  | Name                       Variable binding
  | Value                      Value comparison
  | Pattern : Type         Type annotated
  | case Path Pattern?         Variant deconstruction
  | { (Name (: Pattern)?),* }  Record deconstruction
  | ( Pattern , Pattern,* )    Tuple deconstruction
  | Pattern? .. (=? Pattern)?  Range deconstruction
  | Pattern or Pattern         Alternation

Examples

Tuples

{{#include ../../../arc-lang/examples/tuples.arc:patterns}}

Records

{{#include ../../../arc-lang/examples/records.arc:patterns}}

Enums

{{#include ../../../arc-lang/examples/enums.arc:patterns}}

Arrays

{{#include ../../../arc-lang/examples/arrays.arc:patterns}}