On Sat, 12 Aug 2017 01:02 am, Ian Kelly wrote: > On Thu, Aug 10, 2017 at 11:45 PM, Steve D'Aprano > <steve+pyt...@pearwood.info> wrote:
>> Comprehension syntax makes the sequential loop explicit: the loop is right >> there in the syntax: >> >> [expr for x in iterable] > > This is a peculiarity of Python. Yes? We're talking about Python? I haven't accidentally been posting to comp.lang.anything-but-python have I? *wink* I am not referring to syntax from other languages. (One wonders what a list comprehension in Whitespace would look like...) We're talking about Python, which prefers explicit English-like executable pseudo-code over implicit cryptic mathematical symbolic expressions. Python prefers to be explicit, rather than implicit: that's why purely functional idioms like map, filter and reduce are less idiomatic than comprehensions. But for the record, this is not a peculiarity of Python by any means. I count at least a dozen other languages which use an explicit "for" in their comprehension syntax: Boo, Ceylon, Clojure, CoffeeScript, Common Lisp, Cobra, Elixir, F#, Mozilla's Javascript, Julia, Perl6, Racket and Scala. https://en.wikipedia.org/wiki/Comparison_of_programming_languages_%28list_comprehension%29 And very possibly the first language with comprehensions, SETL (from 1969), used "forall": [n in [2..N] | forall m in {2..n - 1} | n mod m > 0] https://en.wikipedia.org/wiki/List_comprehension#History > Here's a list comprehension in > Haskell, which has supported them since version 1.0 in 1990, much > longer than Python: > > [x * 2 | x <- L, x * x > 3] Sure. In Haskell, comprehensions are *implicit* loops, rather than explicit like in Python. Python's comprehensions are inspired by Haskell's, but we made different choices than they did: we make the fact that a comprehension is a loop over values explicit, rather than implicit, and we use words instead of cryptic symbols. -- Steve “Cheer up,” they said, “things could be worse.” So I cheered up, and sure enough, things got worse. -- https://mail.python.org/mailman/listinfo/python-list