Information Technology Reference
In-Depth Information
where τ p is proc(proc(bool),bool) , τ q , τ f and τ h are proc(bool) and τ i s
and τ g are bool . Static scoping yields the result true as intended by the Algol60-
and Pascal-reports [Nau60, Nau63, JeW75] whereas dynamic scoping yields the
different result false .
Wilhelm's and Maurer's runtime system described in [WiM92] is working
correctly in the sense of Algol60's static scoping. The same seems to hold for
the Dijkstra/Zonneveld Algol60-compiler on the Electrologica X1-machine as
F.E.J. Kruseman Aretz has found out by emulation [KrA06]. Our impression
is that the “most-recent” -property of static pointers has grown out of a wishful
thinking of the authors of [Dij60, WiM92] towards a simple formula, similar to
number theorists who are lenging for a simple formula to determine the n -th
prime number.
2.3
On Another Misunderstanding of Static Binding Towards
Dynamic Binding
In 1965 McCarthy published his Lisp1.5-Programmer's Manual [McC65]. Lisp1.5
is a functional programming language, an extension of the applied λ -calculus
[CuF68]. What was new? Lisp's semantics was defined by an interpreter formu-
lated in Lisp itself. In fact there were two interpreters, one on page 13 for Lisp1.5
without functional arguments, one on page 70/71 for Lisp1.5 with functional ar-
guments.
A language semantics defined by an interpreter written in the same language is
absurd in general. But not in Lisp1.5's case. The two interpreters were formulated
as systems of non-nested recursive function definitions for which a semantics can
be defined independently [LoS84].
The Lisp1.5-manual shows the following curiosity: Bound renaming of iden-
tifiers in given Lisp-programs might lead to deviating results, a fact which is
in strict opposition to bound renaming in λ -calculus expressions. Round about
1983 (as C.A.R.Hoare reported to H.Langmaack [Hoa90]) McCarthy apologized:
The interpreters had just a few simple programmer's errors.
In his lectures on Higher Programming Languages in 1971 at the University
of the Saarland the author of this essay repaired McCarthy's interpreters in
the spirit of Algol60 and called the modified semantics Lisp's natural semantics
[LKK76]. In his book “Common Lisp - The Language” [Ste84] G.L.Steele jr.
changed Lisp's semantics towards static scoping. During the years 1965 to 84
there were presented many conference lectures to overcome the diculties and
ineciencies in shallow binding as prescribed by Lisp1.5's interpreters. Searching
for most recent entries requires searching processes which are not necessary for
static scoping.
Inconsistencies between Algol60's static scope semantics and several Algol60-
implementations which obeyed Dijkstra's dynamic scope advice how to deter-
mine the static pointer SV had unfortunate consequences for the progress of
programming language developments. Ichbiah [Ich80] disallowed procedures as
parameters and formal procedure calls in Ada. He considered formal procedures
to be a too dicult concept as G. Goos reported to the author of this essay.
 
Search WWH ::




Custom Search