SlotComposition

Description

Experiments for Composing Slots

Details

Source
GitHub
Stars
1
Created
May 14, 2019
Updated
Jan. 24, 2020

Categories

System / OS

README excerpt

# SlotComposition
Experiments for Composing Slots

In Pharo, instance variables are described not by simple Strings (like in ST80),  but instead by objects.

First class variables are described by classes, these define read and write, and privide hooks called on class creation 
and instantiation.

Typical examples are e.g. 
- PropertySlot: stores instance state in one (hidden) dictionary. 
- WeakSlot: wrap the variable in a WeakArray to create real "weak instance variables". 
- AccessorInstanceVariableSlot: shows how a slot can react to class creation by creating accessors.

But what if one wants to have a slot that does all of this together? The current model forces the developer to implement a 
WeakPropertyAccessorSlot class, duplicating all code. The resulting combinatory explosion makes it impractical for real use.

The code you find here is an (ongoing) experiment to allow some form of Slot Composition. The model that is explored for now 
takes is based on the idea that most kinds of user defined slots are in some form not really Slots but instead Decorators for existing Slots.

This means we allow one real Slot to be combined with multiple decorators / wrappers. For example:

#slot1 => PropertySlot + WeakSlot2 + AccessorInstanceVariableSlot2

(the suffic 2 implies a implementation of a Slot class that exists in Pharo8, but as a composable decorator)

NOTE: this is ongoing exploratory work to find a model that is simple and yet can model all the current examples. It will change a lot.
← Back to results