# `PtcRunner.Lisp.Analyze.Patterns`
[🔗](https://github.com/andreasronge/ptc_runner/blob/main/lib/ptc_runner/lisp/analyze/patterns.ex#L1)

Pattern analysis and destructuring for let bindings and function parameters.

Transforms RawAST pattern forms into CoreAST pattern representations.
Supports simple variable bindings, sequential destructuring, and map destructuring
with :keys, :or defaults, :as bindings, and renamed keys.

# `analyze_pattern`

```elixir
@spec analyze_pattern(term()) :: {:ok, term()} | {:error, term()}
```

Analyzes a pattern AST for use in bindings.

## Examples

    iex> PtcRunner.Lisp.Analyze.Patterns.analyze_pattern({:symbol, :x})
    {:ok, {:var, :x}}

    iex> PtcRunner.Lisp.Analyze.Patterns.analyze_pattern({:vector, [{:symbol, :a}, {:symbol, :b}]})
    {:ok, {:destructure, {:seq, [{:var, :a}, {:var, :b}]}}}

# `split_at_ampersand`

Splits vector elements at & symbol for rest pattern destructuring.
Returns {:rest, leading_elements, rest_element} or :no_rest

---

*Consult [api-reference.md](api-reference.md) for complete listing*
