NumPy allowed · plain Python earns 10 bonus points
Evaluate recursive expression abstract syntax trees with variable environment scoping.
Implement evaluate_ast(node, env): recursively evaluate an expression AST. Nodes are: numeric constants {"type": "num", "val": float}, variable references {"type": "var", "name": str} (looked up in env), and binary operators {"type": "binop", "op": "+", "left": ..., "right": ...}. Return the evaluated float result.
evaluate_ast(node: dict, env: dict[str, float]) -> float