Reification is the term for an operation by which something that was previously implicit, unexpressed and possibly unexpressible is explicitly formulated and made available to conceptual (logical or computational) manipulation.

For instance, in physics, kinematics reify the "time line" as part of the concept of the physical state being studied, so that you study trajectories in their full time extend (the space-time is reified) instead of points moving in an implicit absolute time (only space, not time, being reified). Relativistic physics go further, by reifying the geometry of space, instead of assuming an implicit "flat" geometry.

A paradox is that you can only talk about reification of a given concept after you were able to actually do it: until you can properly formulate a concept, you cannot properly formulate the concept of formulating it!

Example concepts that are or can be reified in computer science: the notion of a continuation, the notion of storage/stateful context as opposed to that of the pure (context-free) semantics of a given program chunk in a given grammar, the notion of the semantics of the language in which a program is written, etc.

A running program may want to reify such things as references to variables, source code to functions, interpreter to a given program, continuation to a running thread, storage context to a side-effecting program, etc.

This page is linked from: Continuation-Passing Style   Methods of Reflection   Reflection