Try Install Learn Blog API Packages GitHub


An Array is a generic type containing elements of any other type.


The type of a generic array is Array(a) where the parameter is the type of its items.


Arrays are typically created with an array literal:

[1, 2, 3]
["A", "B", "C"]


You can define the type of an array using the of keyword. It is useful for defining the type of an empty array:

[] of Number
[1,2,3] of Number

Accessing Items

We can access an arrays item at a given index using the following syntax:

let array =
  [1, 2, 3]


When accessing an item this way the type of the item will be Maybe(a) where a is the type of item in the array.

This is so because there might not be an item at that index.

Pattern Matching

We can use pattern matching in a case expression in order to match certain values or get items of the array:

case ["A", "B", "C"] {
  [] => ""                /* Empty array  */
  ["a"] => ""             /* Array with only one specific element */
  [a] => ""               /* Array with only one element */
  [a, b] => ""            /* Array with only two elements */
  [a, ...middle, b] => "" /* Array at least with two elements (middle can be empty) */
  [...head, tail] => ""   /* Array at one element (head can be empty) */
  [head, ...tail] => ""   /* Array at one element (tail can be empty) */
  [...items] => ""        /* Items would be the array */
  => ""                   /* Fallback as usual */

The type checker will raise an error if the case is not exhaustive.