Right, here's the nuance: list comprehensions are intended to be concise one-liners, so having the results definition far off to the right defeats the principle I was outlining. Most SQL queries are not like this, they are almost always multiline of the form:
select x, y, z
from Foo
where a or b
Here the opposite is the case: selection-first moves the return definition far from the subsequent code that uses it.
So if you're going to support list comprehensions, a monadic do-style notation which lets you chain them and again places select last:
So if you're going to support list comprehensions, a monadic do-style notation which lets you chain them and again places select last:
https://wiki.haskell.org/List_comprehension#List_monad