# match Pattern matching expression. Tests a value against patterns, evaluates the first match. ## Syntax
[match $value {
    pattern1 => result1
    pattern2 => result2
    _ => default
}]
## Examples
# Literal match
[match $status {
    "ok" => "success"
    "error" => "failure"
    _ => "unknown"
}]
# Type pattern (^type)
[match $val {
    ^number => "it's a number"
    ^string => "it's a string"
    ^list => "it's a list"
    _ => "something else"
}]
# Variable binding
[match $user {
    %{ name $n age $a } => "Name: $n, Age: $a"
    _ => "unknown user"
}]
# Guard clause
[match $x {
    $n when $n > 100 => "big"
    $n when $n > 10 => "medium"
    _ => "small"
}]
# Or patterns
[match $key {
    "yes" | "y" | "true" => true
    "no" | "n" | "false" => false
    _ => nil
}]
# List destructuring
[match $items {
    @{ $head | $tail } => "first: $head"
    @{ } => "empty"
}]
## Pattern Types | Pattern | Description | |---------|-------------| | `42`, `"hi"` | Literal match | | `_` | Wildcard (matches anything) | | `$var` | Binding (captures value) | | `^type` | Type match | | `%{ key $v }` | Map destructuring | | `@{ $h \| $t }` | List head/tail | | `p1 \| p2` | Or pattern | | `$x when expr` | Guard clause | ## Returns The result of the first matching pattern's body. Returns `nil` if no match. ## See Also `if`, `deftype`, `type`, `is?`