04/08/09 07:37
>>177
以下、若干J言語の記述法を用いることをお詫びしますが、できるだけ分りやすくします。
(1)大枠としてはまずこう考えてはどうでしょうか。
h(x) を h(x) =: f(g(x)) と定義することを h =: f @ g と表記すると、
(「=:」は定義を、「@」は関数の合成を意味する。@ は小さい白丸と似たようなもの)
お風呂を沸かす =: いい湯加減になるまで沸かす @ 湯沸かし器に点火する @ 風呂に水を張る
x は「世界」である。「お風呂を沸かす」は、「お風呂が沸いていない世界」に働き掛けて、
「お風呂が沸いた世界」を得るための手続あるいは操作あるいは関数である、と。
つまり、
お風呂が沸いた世界 = お風呂を沸かす(お風呂が沸いていない世界)
(「=」は相同を意味する)
途中経過は、
風呂桶に水を張っただけの世界 = 風呂に水を張る(お風呂が沸いていない世界)
加熱中の世界 = 湯沸かし器に点火する(風呂桶に水を張っただけの世界)
お風呂が沸いた世界 = いい湯加減になるまで沸かす(加熱中の世界)
ってことで。「世界」が大袈裟なら「風呂周りの系」でも可(と言うか適切かも)。