This is an old revision of the document!
Proximity is a filter object that contains a “function” that determine whether or not a user is proximate. There are several predefined functions:
Other functions can be defined as combinations of existing functions by means or combinators: and, or, not
Proximities translate these events into addUser / removeUser events to be processed by flocks. To process these events, flocks register themselves on their dependent proximity.
As a first implementation of the RETE-network, maybe we can start from the oo matching that Tom implemented, so that Proximity functions are templates. For example:
def flockrTemplate := template: { def name := *; // wildcard, can be anything def age := constraint: { _ < 25 }; // must be younger than 25 def address := template: { def street := *; //any street,but street name must be filled def city := "Brussel"; // city must equal this string }; def greet(); // person must have a greet method } taggedAs: [ Flockr ]; // object must be tagged as a Flockr