Module: YNelson

Extended by:
YPetri::World::PetriNetAspect, YPetri::World::SimulationAspect
Defined in:
lib/y_nelson.rb,
lib/y_nelson/dsl.rb,
lib/y_nelson/version.rb

Overview

YNelson is an implementation of a cross between Ted Nelson’s Zz structure, and the functional Petri net (FPN). The resulting data structure, which combines the qualities of FPNs with those of relational databases, I refer to as Nelson net throughout this text.

A Nelson net, from a certain point of view, is as a genralization of a spreadsheet software. In his explanations of Zz structures, Ted Nelson makes wide use of metaphors well known from spreadsheets: cells, ranks, rows, columns, cursors, selections… Nelson net, as implemented here, adds “formulas” to the mix: Spreadsheet “formulas” are simply represented by FPN transitions.

Nelson net disposes of the arbitrary constraints on FPNs, and also extends the plain orthogonal structure of spreadsheet “cells”, as can be seen in the existing spreadsheet implementations:

  1. Both places and transitions of the FPN take part in zz structure.

  2. Formula-based transitions are upgraded to standalone FPN transitions.

The implications of the differences of a zz structure from ordinary hyperorthogonal structures have been, to a degree, explained by Ted Nelson himself. There is a growing body of literature on zz structure applications, including the applications in bioinformatics.

As for functional Petri nets, their power in computing is well recognized (eg. Funnel, Odersky 2000). FPNs are sometimes just called functional nets, because Petri originally described his nets as timeless and functionless. However, in special-purpose applications, such as biochemical applications, to which I incline, it is appropriate to honor Petri, who designed his nets specifically with chemical modeling in mind. In biochemistry, it is common to call functional nets Petri nets (Miyano, 200?).

Defined Under Namespace

Modules: DSL, Yzz Classes: Agent, Dimension, DimensionPoint, Net, Place, Transition, ZzPoint

Constant Summary collapse

DEBUG =
false
VERSION =
"2.3.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.dimensionsObject (readonly)

Returns the value of attribute dimensions.



61
62
63
# File 'lib/y_nelson.rb', line 61

def dimensions
  @dimensions
end

Class Method Details

.Dimension(*args) ⇒ Object

Convenience constructor.



42
43
44
# File 'lib/y_nelson/dimension.rb', line 42

def YNelson.Dimension *args
  YNelson::Dimension.new *args
end

.included(receiver) ⇒ Object

Allows summoning YNelson::DSL by ‘include YNelson’.



69
70
71
72
# File 'lib/y_nelson.rb', line 69

def included receiver
  receiver.extend YNelson::DSL
  receiver.delegate :y_nelson_agent, to: "self.class"
end