(c) Indentation, used to indicate program structure. A
physical IswiM can be defined in terms of an unspecified
parameter: a subset of phrase categories, instances of
which are restricted in layout by the following rule called
"the offside rule." The southeast quadrant that just contains
the phrase's first symbol must contain the entire
phrase, except possibly for bracketed subsegments.
Did this invent Python-style significant whitespace?
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.
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.
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).
"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."
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.
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 `-`.