関数のことと思ってよいと逝った本人だが…

単に関数(Schemeならprocedure)という言葉だけで
そもそもclosureという言葉を持ち出す必要はないように
思う、という意味で「関数のことと思って良い」と書いた。

確かに「空」という言い方はちょっと変だった。
特定の実装に捕らわれた言い方だった。
トップレベルで定義した名前にはR5RSでいう
interactive environmentが閉じ込められてる。

primitiveがclosureでないというのは変な気がする。
closureであっても全くおかしくない(というか、
実装ではそんな区別はしない)と思うが。
また、Scheme自身で書いたprimitiveはどうなる?
漏れが書いた処理系ではevalがSchemeで書いてあるが?
(当然closureになっている。)

Common LispとSchemeで事情は変わらない。
CLtL1の頃はlambdaというシンボルで始まるリストや
関数定義を持つシンボルもfunctionpで真になったが、
これは訂正された。

うーん…

すべての関数(procedure)は、概念的に
(環境, 仮引数, 本体の式)の組と考えることができる。
この組をclosureと呼ぶ、ってのはどう?