PtcRunner.Lisp.Analyze.Patterns (PtcRunner v0.9.0)

Copy Markdown View Source

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

analyze_pattern(other)

@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(elements)

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