This is an extension jhc provides such that a single underscore is a valid expression which expands to the equivalant of 'undefined' except its error message will be annotated with the location and source file in which it appears.
the SRCLOC_ANNOTATE pragma is a generalization of this which reduces the need for it as we can make undefined have the same annotations.
having a short name is useful however now that 'type' level programming is common and expressions like (undefined :: Int) to represent 'Int' are common.
Related
- conflicts with FlexiblePartialApplication