Exec-tree-example.as

From Organic Design wiki

An example of nodal reduction in ActionScript or JavaScript. <as> A = function() {trace("A"); return B;}; B = function() {trace("B"); return C;}; C = function() {trace("C"); return A;};

P = function() {trace("P"); return Q;}; Q = function() {trace("Q"); return R;}; R = function() {trace("R"); return P;};

X = function() {trace("X"); return Y;}; Y = function() {trace("Y"); return Z;}; Z = function() {trace("Z"); return X;};

someNode = {queue:[P,X]}; root = {queue:[A,someNode]};

while (true) { cwd = root; for (var i = 1; i == 1;) { var queue = cwd.queue; if (queue.length > 0) { var todo = queue.shift(); if (next = typeOf(todo) == 'function' ? (i = todo.call) : (cwd = todo)) queue.push(next); } else i = 0; } } </as>