データを捨てるのは難しい、など
集合圏で考えると、!A : A → 1 があるから、これでデータを捨てることになる。しかし、1は「無」ではないから存在がなくなったわけではない。単に縮めただけ、あるいは要素の区別をなくしただけで、捨てたことになってないような気がする。
だが、集合圏では、非空なAに対して A → 0 という射はないから、「有」を「無」にできない。一方、0→A は存在するから、「無」から「有」は許されている。とはいえ、ソフトウェアで「無」状態を表現できないから、0→Aがあってもそのままでは扱いようがない。可能なのは 1→A という射でプログラムを始めることだが、この1がどっから来たのかがどうもわからない。
集合ベースで考えると、データを無にすることはできない。できる事は、データを見えなくすることだけだ。見えないとは言っても「在る」のだから、見えない場所に存在している。つまり、データを捨てるとか消すとか言っても、存在の様式を変化させているだけだ。例えば、例外を出せば戻り値はなくてもいいが、戻り値を例外という様式(チャンネル)に変えて出力しただけ。
1→A がデータの生成か? これもアヤシイ。1はもともと在ったモノだし、Aも最初から在ったモノだし。単に在るモノを特定したに過ぎない。
関係圏なら、A→0 という射が1つだけだが“在るには在る”。これがデータの消去なのか? うーん、わからん。
集合圏と関係圏はまったく違う。似てない。にもかかわらず、集合圏(や部分写像の圏)は関係圏に埋め込める。単なる圏としては確かに埋め込めるのだが、直積・直和の構造は極端に変形してしまう。集合圏の直和は関係圏の双積になり、集合圏の直積はテンソル積になる。我々は、暗黙に「関係圏に埋め込まれた集合圏」を考えていることが多く、直積・直和の解釈でしばしば混乱する。
プランク定数が異なる世界を同時に考えて、ワケワカンナクなっている状況だと思う。実際ワケワカンナイ。なんとかしたい。