> 関数型言語の視点でみると、参照透明性こそ保たれているものの、
> 定義があまりにも操作的なので、もう少しなんとかならないかなぁ
> とも思いました。

対話というものが、操作的なものなので、操作的な定義を与えるのが
自然だと思います。もちろん、表示的意味論を与えられれば、それが
いいと思いますが、その定義はたぶん決してやさしいものではないと
思います。(あの論文では、操作的意味論と表示的意味論の中間くらい
に位置する Natural Semantics という手法?で意味を与えています。
これは、Lazy Evaluation の意味を与えるのにも使われた手法です。)

個人的には、あの論文の手法の素晴らしいところは、パターンマッチに
擬データをとじこめているところだと思っています。

(ここから先は、私の直感的で形式的な根拠のまったくない曖昧な言及です。
嘘である可能性が大きいので注意してください。あやまりを指摘して下さい!)

パターンマッチは、定数が導入されたλ算法のδ簡約(ルール?)に対応
しています。δ簡約は、抽象的な関数の世界を現実世界のものと結びつ
けるようなはたらきをしているように感じます。関数で表現していたのでは、
かえって分りにくく効率もよくない部分を上手く処理していると。
プログラム外の世界との対話を、δに閉じ込めて表現するというのは直感的には、
理にかなった手法であるような気がします。
擬データのパターンマッチを1から書くのは、その複雑な意味ゆえ、易しく
ないでしょうが、論文にあるように、高階関数を上手く定義してやれば、
プログラマが直接、擬データのパターンマッチを書くことはないと思います。

--nobsun

--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/