class IdExpr extends Expr { String name; public String toString() { return name; } public Value eval() { throw new RuntimeException("no such var: " + name ); } Expr subst( /* LetExpr this */ IdExpr id, Value v ) { return (this.id.equals(id)) ? v : this.id; } }