名前空間ってなんだ

 昔々、プログラミングというものをかじり始めたころ、名前空間という概念にすごく悩んだ覚えがある。今から考えてみると、あの悩みは言語化すると以下のようなものとして書けたと思う。つまり、例えばベクトル空間とは集合の要素に対して和とスカラー倍が定義された空間であるが、名前空間とは集合の要素に対してどのような演算が定義された空間であるのか?そもそも名前空間の要素ってなんだ。名前ってなんだろう。関数名とか変数名か。名前に対してどんな演算ができるというのか。
 まぁ、そんな大層な事考えんでも、名前空間が違うというのは、シンボルから実体を探す際の辞書が違いまっせ、程度の意味でっせ、ということがわかったのは、Schemeインタプリタのソースがなんとか読めるようになった頃であるように思う。裏返せば、それまではそんなことも理解できてなかった。やっぱり、どういう風に実装するのかを見てみるというのは、私のように頭が悪い人にとっては、とても大事なのではないかと思うわけです。
 で、今でもたまに考えるのは、プログラミングにおける名前空間という概念は、数学的な空間として扱えないのかな、という事。どういう有意義な演算を定義できるのか、皆目見当もつかないけれど。和とかスカラー倍は無理として、ノルムとか定義できないものか。定義してどう扱えばいい物やらさっぱりわからんけど。