Prefixing a function parameter with ! is causing hang rather than immediate evaluation, possibly in interaction with bound names

(Bug, Closed -> Not a Bug, Priority: Unknown Priority, Test Status: No automated tests yet , Reported By Bad Link: Thing 3y284oe not found, )
Summary: See details.
I've defined a global function Concise Element String(Exclusion List), which receives a set of Elements and yields a concise string form of all elements in the set but not in the exclusion list.
If I try to evaluate, eg,
$subCards -> Has Elements -> Concise Element String(<$elm, $subElm>)
then I get told $elm isn't defined (because the function's looking for the bound value, which doesn't exist therein) (which is another issue, logged as I should be able to use bound names as Function parameters).
I had a dim recollection there was some way around this, and eventually found in the QL documentation: "You can defeat this, if you need to. If you begin a parameter with !, that means "evaluate this parameter here, with the current context, and pass the result to the function call". Conceptually, that seems like it should be very necessary, but in practice I have yet to find a case that actually needs it."
But if I evaluate
$subCards -> Has Elements -> Concise Element String(!<$elm, $subElm>)
the page hangs. Ditto if I eliminate the list literal and simplify it down to
$subCards -> Has Elements -> Concise Element String(!$elm)