[Haskell-cafe] head as a total function
jupdike at gmail.com
Thu Sep 7 15:06:08 EDT 2006
> > it was the first imperative language supporting closures, after all
> Uh, what about lisp?
For those who read the "Foozles" slides posted earlier , I must say
he nailed this one, on slide 2.
> The (MIT) lisp 1.4 manual (ca. 1965) refers to
> FUNCTION differing from QUOTE in that it handled free variables
> "correctly"; I take this to mean that at least a primitive form of
> closure was provided.
Steele's work on Scheme helped Lisp programmers take lexical scoping
seriously ; these ideas and a method for efficient implementation
were attributed to Algol . That lexical scope was available in some
dialect of Lisp, even very early on, doesn't surprise me (and
according to  is the case). But I do think dynamic scoping took a
while to "die out" as generally accepted Lisp practice (it does still
exist in Common LISP, with a special keyword, IIRC) and that Scheme
(late 1970s) helped to effect that.
> Moreover, a language that provides SET/SETQ,
> RPLACA/RPLACD and the PROG feature (including labels and a goto) surely
> qualifies as imperative?
Haskell has been called the best imperative programming language ever.
:-) I mean, Haskell has IORef and friends, right?
 Tenth paragraph, this page: http://www.lisp.org/table/Lisp-History.html
 Steele's Rabbit compiler paper, p.13. See also Steele's Lambda papers
 Steele and Gabriel, Evolution of Lisp.
More information about the Haskell-Cafe