Пример #1
0
 def _call_eager(self, expr: E.Apply, arguments: List[V.Base]) -> V.Base:
     ans_type = self.infer_type(expr)
     try:
         ans = self.op(arguments[0].coerce(ans_type).value, arguments[1].coerce(ans_type).value)
     except ZeroDivisionError:
         # TODO: different runtime error?
         raise Error.IncompatibleOperand(expr.arguments[1], "Division by zero") from None
     if ans_type == T.Int():
         assert isinstance(ans, int)
         return V.Int(ans)
     assert isinstance(ans, float)
     return V.Float(ans)
Пример #2
0
 def eval(self, env: Env.Values) -> V.Float:
     ""
     return V.Float(self.value)