Question: How do I prevent Maple from trying to apply the unappliable?

I've trying to compose operators in Maple and I've hit a snag. Here's a simplified example:

dx := f -> diff(f, x);
dy := f -> diff(f, y);
eq1 := x * dy
eq2 := y * dx


The output of the final statement is x(y*dx)dx. It took me a while to figure out that Maple is treating it like so:

(x * dy)(y * dx)
(x(y * dx)) * (dy(y * dx))
(x(y * dx)) * (dx)
x(y * dx) * dx

The problem is I don't want it applying anything to x, the expression should reduce to x * dx. Same as if x was replaced by a constant, for example:

(4 * dy)(y * dx) = 4 * dx

In the context of my full code, Maple already knows x is not "appliable" e.g. is(x::appliable) returns false. How do I tell Maple to treat x as not-a-function?

Please Wait...