List

From Organic Design wiki
Revision as of 08:05, 22 July 2011 by Nad (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Glossary.svg This page describes a concept which is part of our glossary
Cone.png This article or section is a stub. Stubs are articles that have not yet received substantial attention from the authors. They are short or insufficient pieces of information and require additions to further increase the article's usefulness. The project values stubs as useful first steps toward complete articles.


Queries & indexes

  • filtered lists
  • dynamic lists
  • p2p way - maintained information

Nodal model

In the nodal model, a list is a linked list formed from nodal associations which link each item in a list with the previous and next items. These lists are the basis of the arrow of time in the nodal model.

A list is called a loop if all the items form a closed circuit, or a thread if not. Threads have a start item signified by its Left being unconnected (connected to root), and a last item having its Right unconnected. In nodal reduction, threads only rotate once and are then automatically unhooked because every quanta sent to root is a new quanta.

Since none of the items in a loop is a starting or finishing point, a loop can be referenced by any of its node-items. This means that a reference to a loop can also encapsulate the concept of an item of current focus, a concept used heavily by nodal reduction.

In nodal reduction, a node's value (obtained by calling nodeGet/SetValue with the key parameter set to zero) is called the current focus which is a node within the local list. This node of current-focus is the one which will receive the next quantum of execution from its parent node, and is part of the unified tree of current "work" being processed by nodal reduction.

If a list has static structure, then it can appear in many contexts simultaneously, it's parent association will be dynamically maintained by the nodal reduction algorithm.

Named list

The first data-key of the first list-item in a list with any or none of the above characteristics can be treated as the lists name, and the data-key of the second list-item is actually the start of the list proper. Such a list is called a "named-list", and is used as a higher level of organisation similar to an associative array.

Stack

A Stack is the "usual" most basic type of list construct, only one end needs to be accessed offering only the push and pop methods. note that the first prev-key and the last next-key are wasted.

Queue

Stacks are really redundant, because if the prev-key of the first list-item points to the last, we have a queue. Queue's are just like stacks, except that operations can be performed on either end without iteration.

The only difference between a loop and a queue is that in a queue, the last next-key is does not need to link back to the first item, but it does no harm if it does either. So the loop and the queue can be structurally identical, its their context that determine their type.

Axis

The first prev-key of a list can be used to form an axis rather than the simpler queue or stack structures. An axis uses this prev as the first item of a complimentary "negative" stack, where the prev's link toward the end and the next's back to the start.

In an axis, the first list-item is the centre between the positive and negative lists. If the axis is named then this centre will usually be the list-name. If it is not named, then it must be decided whether the centre is its own unique item or part of one or the other axes. For example, it could be used to link together a list of axes. Note that an axis is wasting the last next-key on both ends.

See also