Print an error message and ``cause a hard error''
See er-hard for a nearly identical utility that is aligned
with (er hard ...), generating a guard obligation of nil.
By contrast, (er-hard? ...) is aligned with (er hard? ...)): these
do not generate guard obligations. This distinction is due to the fact that
a call of (er-hard ...) macroexpands to a call of the function, illegal, while a call of (er-hard? ...) macroexpands to a call of the
(er-hard? context summary str &rest str-args)
Other than the difference in guard obligations generated, as discussed
above, er-hard? behaves identically to er-hard. See er-hard
and for relevant background, see er.