Hacker News new | ask | show | jobs
by majewsky 2282 days ago

  all(xs) and all(ys) == all(xs + ys)
If I understand you correctly, the "and" should be an "implies" instead:

  all(xs) => (all(ys) == all(xs + ys))
Otherwise this law cannot be true since there exist xs for which !all(xs).
1 comments

I think they just got their operator precedences mixed up. They meant:

    (all(xs) and all(ys)) == all(xs + ys)
This is why you should always use parentheses unless it's absolutely obvious! I certainly had to check the docs to find out which way round it goes. I guess normally you're not dealing with Boolean variables so having == bind tighter makes more sense:

    y is not None and x == 7
Yes, indeed! Sorry, I was deviating from the Python order of precedence.