docs: def _compile_constant_expression(self,
                                       expr: Expression,
                                       scope: Dict[str, TensorFluent],
                                       batch_size: Optional[int] = None,
                                       noise: Optional[List[tf.Tensor]] = None) -> TensorFluent:
          '''Compile a constant expression `expr` into a TensorFluent
          in the given `scope` with optional batch size.
  
          Args:
              expr (:obj:`rddl2tf.expr.Expression`): A RDDL constant expression.
              scope (Dict[str, :obj:`rddl2tf.fluent.TensorFluent`]): A fluent scope.
              batch_size (Optional[size]): The batch size.
  
          Returns:
              :obj:`rddl2tf.fluent.TensorFluent`: The compiled expression as a TensorFluent.
          '''
          etype = expr.etype
          args = expr.args
          dtype = utils.python_type_to_dtype(etype[1])
          fluent = TensorFluent.constant(args, dtype=dtype)
          return fluent