Yes, "functional" belongs to the "declarative" family.
Neurons can certainly be seen as functions. This is a very interesting path to AGI.
Don't forget that at output, there are not only limbs, but also several mental functionalities, like the abilities to focus willingly on something, to swap current tasks, to abandon tasks, to open a new temporary task, to learn something, to speak to oneself, to choose to interpret input in a certain way (look at this cloud, it looks like a sheep), ...etc. A lot of "mental actions" that we can choose to perform.
I'll use Racket since that's the language I'm currently swimming in.
So imagine a lot a functional neurons. Feurons. Each feuron is an object with the following properties:
- the computation function (a Racket function, like "+" or something more elaborated).
- a list of "follower" feurons, that receive this feuron output as part of their input
- a "backlink" list of followed feurons, from which this feuron takes its own inputs.
Imagine there is a big list of computation functions available, say 200 user-coded functions. This list represents a list of all possible types of feurons.
Now, I would go this way.
Start with an initial wiring schema, like Korrelan's connectome. Then go step by step.
At each step, do this:
First do your math, so you know the output of every feuron.
Then try to find similarities between results. For example, notice that feuron #2554 and feuron #9810 currently have similar results. You can also search for similarities between current results and results obtained a few steps ago.
For each found similarity, something has to be done. But it's still a little blurry in my mind for now. It's about creating new links. Perhaps Korrelan could come in and tell us what to do at this point.
Then, natural selection needs to happen. You create a lot of new feurons, arbitrarily connected to existing one (which ones?), with computation functions randomly chosen among our 200 functions list. At the same time, you need to let die feurons that are useless (which is related to the similarity thing: useless feurons seems to be completly out of the system, computing non-sense stuff).
Then you do your next step.
This is all very approximative, but I think the answer lies somewhere in that direction.
What do you think guys?
EDIT:
From the wikipedia article on
Hebbian theory:
The theory is often summarized by Siegrid Löwel's phrase: "Cells that fire together, wire together." However, this summary should not be taken literally. Hebb emphasized that cell A needs to "take part in firing" cell B, and such causality can only occur if cell A fires just before, not at the same time as, cell B. This important aspect of causation in Hebb's work foreshadowed what is now known about spike-timing-dependent plasticity, which requires temporal precedence.
What needs to be found is a function that takes a cell A's output as input and that outputs the same output than another cell B. Perhaps.
Also, each type of feuron should come with its own linking machinery: specific ways to link feurons of this type to other feurons. Because it really depends on what this type of feuron eats and produces.