- AST, / ,/-.
ruby. Ruby AST , RubyParser :
> require 'ruby_parser'
> RubyParser.new.parse("x = 1; f = -> {x}; x = 2; f.()").inspect
#=> "s(:block, s(:lasgn, :x, s(:lit, 1)),
# s(:lasgn, :f, s(:iter, s(:call, nil, :lambda), 0, s(:lvar, :x))),
# s(:lasgn, :x, s(:lit, 2)), s(:call, s(:lvar, :f), :call))"
, , node : proc x. , Ruby , x. proc x 2. , proc 2.
Elixir.
iex|1 โถ quote do
...|1 โถ x = 1
...|1 โถ f = fn -> x end
...|1 โถ x = 2
...|1 โถ f.()
...|1 โถ end
node - . x, x . , fn -> not_x end , - proc, .
, Ruby proc, Elixir . , , .