The Next 700 Programming Languages (1965) [pdf](homepages.inf.ed.ac.uk)
homepages.inf.ed.ac.uk
The Next 700 Programming Languages (1965) [pdf]
http://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/landin-next-700.pdf
4 comments
Yes, and the Q&A at the end invented complaining about it.
> From section 6 (page 160), bottom left
In case anyone might be discouraged from reading the article because they don't have time to read something 160+ pages long, don't worry. It's an article extracted from a journal, and the page numbers are the page numbers from the journal issue. It's actually only around 10 pages.
In case anyone might be discouraged from reading the article because they don't have time to read something 160+ pages long, don't worry. It's an article extracted from a journal, and the page numbers are the page numbers from the journal issue. It's actually only around 10 pages.
No. The MADCAP programming language included indentation for conditionals and for-loops at least by 1961 (see, for example, the chapter on MADCAP II in Annual Review in Automatic Computing Volume 2).
I wonder what the author would think of today's Lisps, or languages like Haskell and Prolog that embrace non-sequential execution, allow you to freely define infix operators, and have a where syntax.
My thought is that, in some ways, Landin would be disappointed that Haskell/Prolog/Scala/OCaml etc., are all implementing whole languages from scratch -- Landin's argument, as I read it, is that devising a new ISWIM variant should be about as easy as writing your own Lisp.
That said, it does feel like the ML and Haskell communities really have taken up that spirit, with their emphases on multiple implementations and relatively ease of extension.
That said, it does feel like the ML and Haskell communities really have taken up that spirit, with their emphases on multiple implementations and relatively ease of extension.
You could freely define infix operators and a where syntax in 1965 Lisps.
Haskell is a direct descendent of ISWIM via David Turner's SASL. Landin, however, lost interest in software in the 70s. There's a lot of biographical info, including videos of him reminiscing, to be found online.
Or languages whose strength is in building other languages.
Lisp has the LOOP macro for this kind of nonsense.
I don't think ISWIM (as I understand it) needs to be "conversational" like LOOP. List comprehensions, as a direct translation of set-builder notation, are probably good enough.
LOOP has nothing to do with non-sequential execution, or anonymous scoped blocks (read: 'where' clauses).
LOOP has nothing to do with non-sequential execution, or anonymous scoped blocks (read: 'where' clauses).
not much, he died in 2009
https://en.wikipedia.org/wiki/Peter_Landin
https://en.wikipedia.org/wiki/Peter_Landin
Not only is that immaterial, but he certainly lived to see all of those languages I mentioned.
It seems that later in life he quit focusing on computer science, and may have been out of touch with it as early as the start of the 70's. Here's his obituary: https://www.theguardian.com/technology/2009/sep/22/peter-lan...
"Always bisexual, he threw himself into the politics of the Gay Liberation Front in the early 1970s. He separated amicably from his wife in 1973, and was closely in touch with her and his children till his death. For the rest of his life he pursued gay politics, and his house in Rona Road, Camden, became a gay commune. Always more of a facilitator than an activist, he saw many plots hatched at his dinner parties. Aids: the Musical! was conceived there, as was the reinvigoration of Gay Pride marches in the mid-80s, just in time for the battle over Clause 28. Towards the end of his life, Peter became convinced that computing had been a bad idea, giving support to profit-taking corporate interests and a surveillance state, and that he had wasted his energies in promoting it. But whether he liked it or not, his ideas underpin developments to this day."
"Always bisexual, he threw himself into the politics of the Gay Liberation Front in the early 1970s. He separated amicably from his wife in 1973, and was closely in touch with her and his children till his death. For the rest of his life he pursued gay politics, and his house in Rona Road, Camden, became a gay commune. Always more of a facilitator than an activist, he saw many plots hatched at his dinner parties. Aids: the Musical! was conceived there, as was the reinvigoration of Gay Pride marches in the mid-80s, just in time for the battle over Clause 28. Towards the end of his life, Peter became convinced that computing had been a bad idea, giving support to profit-taking corporate interests and a surveillance state, and that he had wasted his energies in promoting it. But whether he liked it or not, his ideas underpin developments to this day."
First example:
The paper restricts to pure functions, where this is not an issue. But it does seem to violate a widely followed implicit rule that lines of code are in strict causal order, with well-defined explicit exceptions for control flow.
x(x - k a)
where x = b + 2c
Now imagine ‘+’ and ‘-’ have side-effects, like a log message. What would the output be? ‘+-’, ‘++-’ or ‘+-+’? Certainly not the ‘-+’ order as they appear in the code, which is causally impossible.The paper restricts to pure functions, where this is not an issue. But it does seem to violate a widely followed implicit rule that lines of code are in strict causal order, with well-defined explicit exceptions for control flow.
I'm not sure "violate" is the right word, given Landin's objectives.
If the where-clause offends you, use a let-clause instead?
If the where-clause offends you, use a let-clause instead?
this already happens: in a variety of languages, x could just be an ordinary function with the body defined below any given usage. here, `where` could be replaced with a standard function definition, and it's `+` would still be textually below the usage's `-`.
> A possible first step in the research program is 1700 doctoral theses called "A Correspondence between x and Church's λ-notation."
Did this invent Python-style significant whitespace?