- 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 . , , .