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.
Summary
Functions
Analyzes a pattern AST for use in bindings.
Splits vector elements at & symbol for rest pattern destructuring. Returns {:rest, leading_elements, rest_element} or :no_rest
Functions
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}]}}}
Splits vector elements at & symbol for rest pattern destructuring. Returns {:rest, leading_elements, rest_element} or :no_rest