Files
quartz-research-note/content/モジュールの名前環境解決を考慮した評価文脈.md
Matsuura Tomoya(Windows) 40a652e455
All checks were successful
Build / build (push) Successful in 22m38s
[obsidian] vault backup: 2026-02-02 23:23:19[
2026-02-02 23:23:20 +09:00

958 B
Raw Blame History

何度目だという評価環境の実装。

モジュールも考慮して、名前空間のOpenとかも含めた評価環境を実装したい。

名前の側で正規化するのがいいのか?

//Environment全体をSlotMapで管理する
struct Environment<V>{
 namespace:Option<Symbol>
 parent: Option<EnvKey>
 children: Vec<EnvKey>,
 span:Range<u64>,
 binds: Vec<(Symbol,V)>
}

letでスコープを広げたときはnamespaceなしで辿ることにする

最終的にはLanguage ServerでSpanからEnvironmentの位置を補足したいということになる。

基本的に、子環境のEnvironmentは常に親のEncより狭い範囲のSpanを持つはず。そして子要素同士のSpanは交差しないはず。

親から子要素を二分探索で辿って行ってSpanは交差しないからPartialOrdにできるはず

fn get_completions(arena:SlotMap<_>,root_env:EnvKey,span:Span){
 

}