def execute_evaluated(self, operands: List[Expression], frame: Frame) -> Expression: verify_exact_callable_length(self, 2, len(operands)) assert_all_numbers(operands) negate = (operands[0].value < 0) != (operands[1].value < 0) negate = -1 if negate else 1 return Number(negate * operands[0].value // operands[1].value)
def execute_evaluated(self, operands: List[Expression], frame: Frame): verify_min_callable_length(self, 1, len(operands)) assert_all_numbers(operands) if len(operands) == 1: return Number(-operands[0].value) return Number(operands[0].value - sum(operand.value for operand in operands[1:]))
def execute_evaluated(self, operands: List[Expression], frame: Frame) -> Expression: verify_min_callable_length(self, 1, len(operands)) assert_all_numbers(operands) if len(operands) == 1: return Number(1 / operands[0].value) out = operands[0].value for operand in operands[1:]: out /= operand.value return Number(out)
def execute_evaluated(self, operands: List[Expression], frame: Frame) -> Expression: verify_exact_callable_length(self, 2, len(operands)) assert_all_numbers(operands) return Number(operands[0].value % abs(operands[1].value))
def execute_simple(self, operand: Expression) -> Expression: assert_all_numbers([operand]) return Number(abs(operand.value))
def execute_evaluated(self, operands: List[Expression], frame: Frame): assert_all_numbers(operands) out = 1 for operand in operands: out *= operand.value return Number(out)
def execute_simple(self, operand: Expression) -> Expression: assert_all_numbers([operand]) return bools[operand.value == 0]
def execute_evaluated(self, operands: List[Expression], frame: Frame): assert_all_numbers(operands) return Number(sum(operand.value for operand in operands))