Hi,

I'm looking for a language to abuse for a project I'm working on. I know a little Python, but I do not know if it can do this: I'd like to define some class "N" that instantiates objects that can instantiate fresh new objects of that same class... without external controller code.

You could use this capability, for example, to generate a red-black tree-type data structure that implicitly instantiates a new node for each new input d1, d2, d3... so on. The algorithm for each node could be:

-- Toggle downstream L/R pointer
-- If no node there, instantiate one and link to it
-- if a node is there, pass the datum to it

The execution sequence as the tree builds itself out might look something like this:

1. n0 = N(d0)   # new instance of N
                        # (downstream pointer default = "Left")
                        # (the first input data, d0, is instantiated in node n0)
                        # nodes: n0

2. n0.send(d1) # toggle n0's downstream pointer to "Right"
# on n0 there is no downstream node right so instantiate a new linked node right n1 with d1
# nodes: n0,n1


3. n0. send(d2) # toggle n0's downstream pointer "Left"
                        # in n0 there is no downstream node left so instantiate 
n2 with d2
                        # nodes: n0,n1,n2

4. n0. send(d3) # toggle n0's downstream pointer "Right"
                        # there exists a downstream node right, n1, so send d3 
there
                        # toggle n1's downstream pointer "Right"
                        # in n1 there is no downstream node right so 
instantiate n3 with d3
                        # nodes: n0,n1,n2,n3

5. n0. send(d4) # toggle n0's downstream pointer "Left"
                        # there exists a downstream node left, n2, so send d4 
there
                        # toggle n2's downstream pointer "Right"
                        # in n2 there is no downstream node right so 
instantiate n4 with d4
                        # nodes: n0,n1,n2,n3,n4

6. n0.send(d5)  # toggle n0's downstream pointer "Right"
                        # there exists a downstream node right, n1, so send d5 
there
                        # toggle n1's downstream pointer "Left"
                        # in n1 there is no downstream node left so instantiate 
n5 with d5
                        # nodes: n0,n1,n2,n3,n4,n5

7. n0.send(d6)  # So on...
                        # ...


Any thoughts about how to do this in Python appreciated. Possible at all? Thanks in advance,


-Rayme.

_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig

Reply via email to