Pair LISP-like two element cells

Inherits from: Object : Collection

(implementation incomplete. See J Concepts In SC for similar functionality)

Class Methods

*new(linkDown, linkAcross) return new instance

*newFrom(collection) convert collection (e.g. arrays of arrays) to pairs.

Instance Methods

Most methods are inherited from the superclasses.

size

return the size when linking across

depth

return the size when linking down

do(function)

iterate over the two elements

traverse(function)

same like: depthFirstPreOrderTraversal

depthFirstPreOrderTraversal(function)

traverse the data structure first link down, then across (see example).

depthFirstPostOrderTraversal(function)

traverse the data structure from bottom up (see example)

// example

a = Pair(Pair(Pair(1, 2), 4), Pair(5, 6));

a.size;

a.depth;

a.do { |x| x.postln };

a.traverse { |x| x.postln };

a.depthFirstPreOrderTraversal { |x| x.postln };

a.depthFirstPostOrderTraversal { |x| x.postln };

// alternative instantiations:

Pair.newFrom([1, [2, [[4, 5], 6]]]);

[1, [2, [[4, 5], 6]]].as(Pair); // equivalent.