I'm reading the r6rs(Revised6 Report on the Algorithmic Language Scheme), in the "INTRODUCTION" part there is one summary:
"Scheme was the first major dialect of Lisp to distinguish procedures from lambda expressions and symbols, to use a single lexical environment for all variables, and to evaluate the operator position of a procedure call in the same way as an operand position."
My questions are:
what's the benefit of "to distinguish procedures from lambda expressions and symbols"?
what's the single lexical environment? my understanding is, because of the lexical scope, everything in Scheme are "lexical", no run-time scope there, location/position in the source code means more about the environment.
how to understand "to evaluate the operator position of a procedure call in the same way as an operand position"? my understanding is the symbol at operator position is evaluated as operand position. for example:
(define test
(lambda (x)
((if (> x 0) + -) 1 2)))
the "(if (> x 0) + -)" is at the operator position, its evaluation is same as other operand position's evaluation.