--- Begin Message ---
Hi,
I hope you are enjoying Guile!
Making a procedure have an invariant identity does not
rule out the kind of procedure-integration optimization
that you suggest. It is truly a bit more work for the
compiler. Indeed, the compiler may integrate a procedure
passed as an argument or returned as a value, but its
identity need not change. This takes about 1 extra word
of memory and a few extra instruction executions in the
worst case. (And cycles are really free, compared with
memory references, these days.)
However, maintaining logical consistency is an important
goal in language design. The main goal of specifying a
language is not to make the job of the compiler writer
easy. If that was the goal we could adopt "C". We
should make a language we like. The compiler writers I
know are surely good enough to handle small complexities
like this.
GJS
--- End Message ---