How Gerbil Poo’s Objection Orientation System works
We have 2 concepts:
Prototype
Instance
Prototypes
Partial, incremental specification of computations.
They can be compose into more complete specifications. This is done via inheritance.
Instance
Suppose you have a suitable specification. You can extract the according computation, and compute the result (the instance).
This process is known as instantiation. It can be done using a fixed-point operator (fix
).
An instance is a set of slots, each binding a name to a value.
In other languages this is known as object keys and values, fields and attributes, methods.
{ x: 1
, y: 2
}
Prototype
A Prototype is an incremental description of how each slot of an instance can be computed from other slots of the instance or inherited from super-prototypes.
Object
Pure functional setting => all instances of a prototype are equal.
We can cache the prototype, carrying with every instance the prototype from which it was generated.
You can use this to:
Build new prototypes (and discard instance info)
Shallowly copy object’s instance / use and export its computation results.