No. 021 (2025.08.21)
前回
参加者
yuchi yamaguchi.icon abap34
antimon2
読み進めていく
resolve_scopes の analyze_scope の終盤あたりから
selfarg = first(lambda_args)
#self# みたいなのを追加している。
そのあと var_ids (そのスコープで導入された変数たち) を入れていく (これはいい)
そのあと **使われているやつ** を追加していく
code:plaintext
# FIXME: This assumes used bindings are internal to the lambda and cannot
# be from the environment, and also assumes they are assigned. That's
# correct for now but in general we should go by the same code path that
# identifiers do.
eval(Main, Meta.parse("x = 1")) みたいなこと...?
**どういうときに BindingsId が ex に入った状態で analyze_scope に入ってくる??**
code:julia
function f(x, y::T) where T
z = x + 1
function g(inner_x)
z = 10
return inner_x + z
end
end
→
code:julia
[ Info: Dict{JuliaLowering.NameKey, Int64}()
[ Info: Int64[]
========================================
[ Info: Dict{JuliaLowering.NameKey, Int64}(JuliaLowering.NameKey("T", 1) => 6)
========================================
[ Info: Dict{JuliaLowering.NameKey, Int64}(JuliaLowering.NameKey("g", 1) => 10, JuliaLowering.NameKey("y", 1) => 8, JuliaLowering.NameKey("T", 1) => 9, JuliaLowering.NameKey("z", 1) => 11, JuliaLowering.NameKey("x", 1) => 7)
========================================
[ Info: Dict{JuliaLowering.NameKey, Int64}()
========================================
[ Info: Dict{JuliaLowering.NameKey, Int64}(JuliaLowering.NameKey("inner_x", 1) => 13)
↑ これを読みとくところから?