In the real world, it would be handy to be able to do something like this, to perform validation on optional params:
<cfif structKeyExists(URL, "a") IMP validateId(URL.a)>
Wherein we only care about validation of URL.a if it exists. That'd be about the most useful application of IMP, IMO (well, like, it would be).
However due to a bug in the implementation of IMP, this doesn't work :-(
I think Dale's assertion that the much longer (and incorrect) logic is easier to read than the shortened version is self-evidentally wrong, and based on a specious premise to boot. His position is based on an idea that "someone not knowing something" is a continuous state, ie: when someone doesn't know something (like what "IMP" means), then they will forever not know it. This is not true. A person might not know something initially, but once they find out about it, then they will know about it. So the problem of not knowing how the IMP oerator works is a very short-lived one.
I don't think situations arise wherein IMP is needed arise very often, but it's handy to have it there. And it'd be handier still if it worked properly ;-)