class ibool function __construct(b) assert(type(b) == "boolean", "argument must be a boolean") self.b = b end function iff(cond) return cond ? self.b : not self.b end end local itrue = new ibool(true) local need_umbrella local raining = true -- Normal syntax. if raining then need_umbrella = true end print($"Is it raining? {raining}. Do I need an umbrella? {need_umbrella}") -- Inverted syntax. raining = false need_umbrella = itrue:iff(raining) print($"Is it raining? {raining}. Do I need an umbrella? {need_umbrella}")