# 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?`