In C, this roughly corresponds to malloc followed by initialization.
All modern languages have the ability to create data whose extent is dynamic.
However, many programming languages force the life-span of data to coincide with the execution period for the lexical scope in which they are created. Advanced languages instead put all complex data on the heap and let the program behavior determine the life-span of each datum. To make this approach work, such languages provide a garbage collector, which automatically de-allocates data when it is provably irrelevant. Now we return to the question of how to model Cons in the interpreter. We can do it by adding a store as a component of the evaluator, similar to the store in the Jam 2000 interpreter used in Comp 210.