This question is an expansion of my previous reply.
There exist sixty kinds of statements in Maple, whose major
proportion can be used as an expression or within an expression (e.g., assignment, loop, and condition). But why is
use an exception?
Moreover, since it is reasonable to think of
use as a (partial) generalization (see below) of the
subs function, shouldn't the behaviour of
use be consistent with
Compare: "seq((…;…;…), x in x__0):" (not allowed) vs. "for x in x__0 do …;…;… od:" (allowed); "subs(x = x__0, (…;…;…)):" (not allowed) vs. "use x = x__0 in …;…;… od:" (Not allowed! Why?).)
Edit. Besides that, is there some workaround to do something like
use can be used as an expression or within an expression,
use x = 2 + y in 'use y = 4 in x + y end' end;
# should return “use y~ = 4 in (2 + y) + y~ end use;” and
(use y = 2 + x in x -> x + y end);
# should output “x~ -> x~ + (2 + x);”.
# Unfortunately, I cannot find a workaround to stimulate them.
at present? Note that the `subs` function is unable to do so, so in my opinion, only when the use of `use` is no longer limited to statements will it become a sweeping generalization of `subs`.