Learn linq or query/list comprehensions and then you'll easily see why SQL is backwards.
Learn linq or query/list comprehensions and then you'll easily see why SQL is backwards.
SELECT results FROM source WHERE criteria
results = source(criteria)
It's rare to see someone want to change assignments in code to be like: source(criteria) -> results
Where I see it as the same thing: the SELECT columns, like the variable assignment, are the interaction point with the following lines of code.And yes, CTE ordering does annoy me because of this. Putting it in the middle is pretty much the worst order.
Indeed, which is why source(criteria) -> results makes more sense: the results definition is right next to the code that's going to be using that definition. If you put the results definition first as with SQL, then you have to scroll up to find the context (although perhaps Python's indentation sensitivity is the tripping point in this case). Not even mentioning the fact that the SQL way completely destroys any chance of code completion.
I'm going to boldly state that the SQL way is literally objectively wrong, in that there is no world in which SQL's choice is superior for general querying.
> or query/list comprehensions
List comprehensions are column first.
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:
return source(criteria).results
In your SQL, `results` isn't the variable you're assigning to, it's the column you're reading from source.