Control flow

No truthiness

That if (list) / if (x) habit doesn’t transfer here. A condition has to actually be Bool — no number, string, or collection gets to stand in for one.

Ascent stops you right there and says why: items is a List<Int>, not a Bool. Say what you mean instead:

and, or, and not are the same deal — plain words, Bool-only, no coercion lurking underneath.

One quirk worth knowing: not binds looser than a comparison, so not a == b reads as not (a == b), not (not a) == b.