This paper focuses on extensibility, the ability of a
programmer using a particular language to extend the
expressiveness of that language.
This paper explores how to provide an interesting notion of
extensibility by virtualizing the interface between code and data.
A virtual value is a special
value that supports behavioral intercession.
When a primitive operation is applied to a virtual value, it invokes a trap on that virtual value. A virtual value contains multiple traps, each of which is a user-defined function that describes how that operation should behave on that value.