This is pretty useful for debugging since the Genotype object updates in realtime to keep the state of each node.
However, there's a limitation to the current implementation. Currently Cell wraps all the functions with Nucleus.bind() to make sure each time a function is called it gets added to the Nucleus._queue and the diff logic is triggered when the call stack becomes empty.
Cell attaches a data structure called
Genotype
to each node to allow each node to manage its own state in a decentralized manner.So if you take any node created by Cell, and query its
Genotype
you'll get the "blueprint" of the node. For example you create a node like this:and query it like this:
This is pretty useful for debugging since the
Genotype
object updates in realtime to keep the state of each node.However, there's a limitation to the current implementation. Currently Cell wraps all the functions with
Nucleus.bind()
to make sure each time a function is called it gets added to the Nucleus._queue and the diff logic is triggered when the call stack becomes empty.This means when I do something like
it will print the wrapper function that's returned by
Nucleus.bind()
, not the original function.Need to find a way to retrieve each function's original form instead of the bound function so it's completely stateless and reusable.