「不純」は僕のスローガンですね。近代的(モダン)なプログラミングやソフトウェア工学では、排除、あるいは忌避されている概念や手法を積極的に取り上げようということです。アンチモダンと言ってもいいけど、なんか哲学用語みたいだから「不純な計算」、「不純なプログラミング」と呼ぶことにします。で、その不純なモノ達とは:
- 副作用や例外
- goto文
- フローチャート
- 多重継承
- 自己改変コード
副作用や例外は、モナド/余モナド/両モナド(双モナド)などを使えば定式化できます。分合律(dissociative law)のような特殊な計算法則を使うのも楽しいですね。
goto文は、継続や米田埋め込み(CPS変換)で解釈できる場合もあります*1。
フローチャート(goto文とも関係します)といえば、トレース付きモノイド圏やコンパクト閉圏でしょう。
多重継承は嫌われ者ですが、メイヤー先生は独自の擁護論を展開しています。僕は特に擁護も養護もしてないのですが興味は持っています。
多重継承を扱うにふさわしい枠組みは? そりゃインスティチューションでしょう。
自己改変コードについてはたまに考えてみるんですが、よくワカリマセン。状態空間が変化していく状況をモデル化したいなら、クリーネ圏を使えばよさそうなんですが …
不純な計算や概念、多くの人が避けたり嫌ったりする計算や概念は魅力的。ただのへそ曲がりかもしんないけど、面白いんだからしょうがない。