1. An expression which depends on its own value or a technique to detect such
expressions. In graph reduction, when the reduction of an expression is begun,
the root of the expression can be overwritten with a black hole. If the
expression depends on its own value, e.g.
x = x + 1
then it will try to evaluate the black hole which will usually print an
error message and abort the program. A secondary
effect is that, once the root of the expression has
been black-holed, parts of the expression which are
no longer required may be freed for garbage
Without black holes the usual result of attempting to evaluate an expression
which depends on itself would be a stack overflow. If the expression is
evaluated successfully then the black hole will be updated with the value.
Expressions such as
ones = 1 : ones
are not black holes because the list constructor, : is lazy so the
reference to ones is not evaluated when evaluating
ones to WHNF.
2. Where an electronic mail message or news aritcle has gone if it disappears
mysteriously between its origin and destination sites without returning a bounce
message. Compare bit bucket.
black box « black-box testing « Black Data
Processing Associates « black hole » BlackIce
» black magic » blargh