一晩寝たらすっきりわかった。
単なるModel-Viewの問題だ。

たとえば、UNIXのソケットプログラミングをしてる人に対して、
socketの戻り値はなんですか? と聞いたら、
『ソケットのidだよ』と答えるでしょう。
事実としてはint型の整数であっても。

同様に、
関数型プログラミングをしてる人に対して、
(define ((compose f g) x) ((f g) x)) の戻り値はなんですか? と聞いたら、
『関数だよ』と答えるでしょう。
事実としては『環境を伴う手続き』であっても。

そういうことだね。