code: def eval_typed(expression):
      """Evaluate a Hail expression, returning the result and the type of the result.
  
      This method is extremely useful for learning about Hail expressions and understanding
      how to compose them.
  
      The expression must have no indices, but can refer to the globals
      of a :class:`.hail.Table` or :class:`.hail.MatrixTable`.
  
      Examples
      --------
      Evaluate a conditional:
  
      >>> x = 6
      >>> hl.eval_typed(hl.if_else(x % 2 == 0, 'Even', 'Odd'))
      ('Even', dtype('str'))
  
      Parameters
      ----------
      expression : :class:`.Expression`
          Any expression, or a Python value that can be implicitly interpreted as an expression.
  
      Returns
      -------
      (any, :class:`.HailType`)
          Result of evaluating `expression`, and its type.
  
      """
      return eval(expression), expression.dtype
  
file_path: hail/hail/python/hail/expr/expressions/expression_utils.py
imports: from typing import Set, Dict
  from hail.typecheck import typecheck, setof
  from .indices import Indices, Aggregation
  from ..expressions import Expression, ExpressionException, expr_any
  from ...ir import MakeTuple
label_desc: Use image node_id 4 for calling a global function with example usage: eval_typed(expression) and returns: eval,  expression