Pattern Matching Basics

Pattern matching is one of the clearer ways to see the Makrell family as a structured language design rather than only a compact syntax.

Step 1: match a literal

{match value
    2
        "two"
    _
        "other"}

This is the smallest useful pattern shape:

  • a literal case

  • a wildcard fallback

Step 2: match structure

{match [2 5]
    [x=_ y=_]
        x + y
    _
        0}

Now the match is doing more than checking equality. It is also pulling structure apart and binding names.

Step 3: match by type

{match value
    _:str
        "string"
    _
        "other"}

Step 4: match regular sequence shape

{match [2 3 5]
    {$r 2 _ 5}
        true
    _
        false}

Why this matters

Pattern matching lets you write expected structure directly. That often makes control flow easier to read than separate tests, indexing, and unpacking code.

Where to go next