何度目だという[[評価環境]]の実装。 モジュールも考慮して、名前空間のOpenとかも含めた評価環境を実装したい。 名前の側で正規化するのがいいのか? ```rust //Environment全体をSlotMapで管理する struct Environment{ namespace:Option parent: Option children: Vec, span:Range, binds: Vec<(Symbol,V)> } ``` letでスコープを広げたときはnamespaceなしで辿ることにする 最終的にはLanguage ServerでSpanからEnvironmentの位置を補足したいということになる。 基本的に、子環境のEnvironmentは常に親のEncより狭い範囲のSpanを持つはず。そして子要素同士のSpanは交差しないはず。 親から子要素を二分探索で辿って行って(Spanは交差しないからPartialOrdにできるはず) ```rust fn get_completions(arena:SlotMap<_>,root_env:EnvKey,span:Span){ } ```