I think what I want is a context where you could ask questions like "Where does this curve cross that curve?" with the curves specified in some combination of:

y=f(x), r=f(theta), and {x=f(t), y=g(t)}

(My immediate questions to code have two equations in polar form.)

Some students gravitate toward answers like

Cartesian-(1,1)

even when the two curves were expressed in polar and others would answer with

Polar-(sqrt(2), pi/4)

I have no problem with this flexibility for these questions, and it would be nice to program in that flexibility. I'm thinking that I need a new kind of MathObject: Polar. It would be analogous to Point, but have different delimiters and/or separators. Perhaps P(r,t) would be the default or perhaps (r;t). The comparison operator == would be usable between a Polar and a 2D Point. (And maybe the notion of Polar should extend to Spherical.)

This is what I was trying to do, and I though I understood how to get started. But I could not get 'P(' to be parsed as an open delimiter. I think the '(' was always being intercepted first and interpreted as a delimiter, and then 'P' was always an unrecognized variable.

I'll clean up my progress and try to post sample code for anyone interested.