Question: Issue with double unapply

Consider the following two functions:

f := (theta) -> (x) -> theta*x;
g := unapply(unapply(theta*x,x),theta);

I would have expected f and g to behave identically. Apparently I am wrong, though:

f(phi)(x),
g(phi)(x);

But why? If the functions were alternatively defined as

f := (theta,x) -> theta*x;
g := unapply(theta*x,theta,x);

using unapply only once, then they would behave identically. But that is not quite what I want: I would like to have parameter-valued procedures of a single parameter, not (parameter-less) procedures of two parameters.

Please Wait...