Represents the context about the program state at a point in time.
Represents a function created through the interpreter.
Represents a function created through the interpreter.
Creates a function created outside of the interpreter.
Represents a scope within the language containing declared variables as well as the parent scope if it exists.