systematics#
Our philosophy is realized through a systematics: a collection of practical and systematical steps to be used to build f-systems
.
review#
Recall that :
f-systems
are composed byentities
and byconstructions
entities have a
type
f-systems
typically deals with parametric polymorphismsthe entities normally have metadata.
In the following we will deal with “stateful
f-systems
”, for with an entity have not only atype
, but also astate
.
global state#
The state
of an entity is defined by all information we have on the system in a given moment. If the entities have a state, also has the f-system
: it is given by the entities that the system have access in that given moment.
These are the so-called accessible entities, which determines the global state of the
f-system
.
database#
The entities should be created at some sort of “database”, which stores the state of the entities and, therefore, which defines the “global state” of the f-system
.
structure#
If entities have “metadata”, this means that they split into two parts:
the metadata
other specialized data.
The metadata should contains, for example:
description
: which briefly describes the entitytags
: which classify the entitycomments
: which complement the entity
The specialized data may vary from the entity kind, but, in essence, they define the “body” of the entity, which is the part of an entity which is used to construct other things.
The “state” of an entity is defined by its metadata and by its specialized data.
methods#
To modify the “state” of something we need certain CRUD operations. In our context, they could be viewed as methods:
database()
: creates some empty database. In other words, initialize the global stateinit()
: creates (or initialize) an entity in some database with its minimal stateadd()
: add some metadata, as a “tag” or a “comment”delete()
: delete some metadataextend()
: add something to the “body” of the entityupdate()
: change something in the metadata or in the body.
On the other hand, recall the principle of “distinguishability”. According to them, one should be able to have a simplified access to the information that distinguishes an entity from the other entities. In other words, one needs two new methods:
find()
: localizes an entity inside a database from some given informationget()
: retrieves specific metadata or specialized data of an entity
Finally, we also have the principle of “intelligibility”, so that we also need another method:
info()
: prints information of an entity in a human readable way.