一般的なIO代数
集合圏かCPOの圏で考えるとして(デカルト閉圏ならいい)、ωは自然数(順序付き)か似たようなモンだとして、Aは勝手な対象。
- in:Aω→A
- out:A→Aω
とすると、ストリームIOの雰囲気がする。inとoutの間には通常はなにかしら関係があるが、特に関係は考えないとする。さらに、ωをV(ただし固定)にすると、
- in:AV→A
- out:A→AV
というオペレーションの組が一般的なIO代数と呼ばれるもの。一般的過ぎる気もするが。
F(A) = AV とすると、inはF-代数、outはF-余代数を定義するので、IO代数は、両代数となる。in+out:F(A)+A →A+F(A)として定義できる。G(A) = F(A)+A, H(A) = A+F(A) とすると、個別のinoutは、G(A)→H(A)なので、(G, H)-両代数。(G, H)-両代数の圏がIO代数の圏。