「型システム入門」のオープンな再帰について
- kazu_yamamoto
- 2047
- 0
- 1
- 0
TaPL 教えて: p178 の「オープンな再帰」は、Template Method パターンとかのことでしょうか? そうなら、どの辺りが「再帰」なんでしょうか?
2013-03-28 16:17:29@kazu_yamamoto オブジェクトのメソッドが、(他のメソッドを呼び出すときのレシーバとかで)オブジェクト自身を参照するところで再帰します。例えばHaskellで、関数型をフィールドにもつ型でオブジェクトを作ろうとしてみると、やはり似たような値再帰が必要になるはず。
2013-03-28 16:23:47@kazu_yamamoto 暗黙的な this が介在してる再帰呼び出しなイメージですね。 http://t.co/9n6XIJpJv3
2013-03-28 16:25:49.@gakuzzzz 記事の紹介ありがとうございます。開かれているのは分かるんですが、再帰が本質なのかまだ分かっていません。もう少し勉強します。
2013-03-28 16:37:52@kazu_yamamoto ここの例については,プログラム実行が同じ文面のところに戻ってこないので,その意味では「再帰」というのは紛らわしいのかもしれません.
2013-03-28 16:57:50@kazu_yamamoto 正確にはメソッドの集まりを表すレコードを経由した再帰になります。このレコードを継承によって書き変えられ(オーバーライドでき)るよう、再帰において直接的に参照するのではなく、間接的に参照しておくのが、オープンな再帰です。18.10節に出てきますね。
2013-03-28 16:58:11@kazu_yamamoto (補足)あ,すいません p.178 がどこかは実は正確にわかっていません.18章の例のつもりでいました.
2013-03-28 17:00:23twitter でやるならハッシュタグつけて、togetter にまとめてもらえると嬉しいかも #TAPL
2013-03-28 17:13:58@kazu_yamamoto はい、それでよいと思います。一般にはふたつ(以上の)メソッドが相互再帰しているのを、継承する時に一部分を差し替えるようなことができます。
2013-03-28 17:30:10