Lua has no ternary operator, so I use cond and a or b everywhere. It broke in a config loader: local pullup = opts.pullup or true always gives true, even when the caller passes pullup = false, and local v = ok and cache[key] or compute(key) recomputes when the cached value is false.
What are the exact rules for and and or, and how should defaults be written so that false is respected?




