The point is that 2 and (λ (x) 2) are vastly different objects, yet in standard math are treated the same.
Also you don't need a symbol type to deal with variables, you just need to allow type variables to be used in standard expressions. (define x R) (^ x 2) is just as easy to manipulate as (λ (x) (^ x 2)), the only issue is that your rewrite rules how aren't just looking at syntax, but semantics too.
Also you don't need a symbol type to deal with variables, you just need to allow type variables to be used in standard expressions. (define x R) (^ x 2) is just as easy to manipulate as (λ (x) (^ x 2)), the only issue is that your rewrite rules how aren't just looking at syntax, but semantics too.