Dennis Hackethal’s Blog
My blog about philosophy, coding, and anything else that interests me.
Simple Explanation of Mental Integration
This article assumes basic knowledge of programming.
Integration is a concept from objectivist epistemology. The Ayn Rand Lexicon offers the following quotes for the entry on “Integration (Mental)”:
Integration is a cardinal function of man’s consciousness on all the levels of his cognitive development. First, his brain brings order into his sensory chaos by integrating sense data into percepts; this integration is performed automatically; it requires effort, but no conscious volition. His next step is the integration of percepts into concepts, as he learns to speak. Thereafter, his cognitive development consists in integrating concepts into wider and ever wider concepts, expanding the range of his mind. This stage is fully volitional and demands an unremitting effort.
A concept is a mental integration of two or more units which are isolated according to a specific characteristic(s) and united by a specific definition. . . . [In concept-formation], the uniting involved is not a mere sum, but an integration, i.e., a blending of the units into a single, new mental entity which is used thereafter as a single unit of thought (but which can be broken into its component units whenever required).
Before I continue, some disclaimers: I have not read the quoted works. I am only beginning to develop an interest in objectivist epistemology, so my thoughts on the topic are very much preliminary. Inspired by Karl Popper, I disagree with Rand’s rather empiricist and hardware-focused explanation of integration, and I suspect even the integration of sense data does require conscious volition, at least initially, in early childhood. But here, I wish to approach Rand’s concept of integration in its own right and offer a simple way of looking at it through the lens of programming.
Put simply, integration means taking two or more mental units and putting them together to form a new concept. For example, repeat addition makes multiplication. The two joined concepts are 1) addition and 2) repetition. Put them together in specific ways, and you get multiplication. For example, one way to calculate 2 times 3 is:
(apply + (repeat 2 3))
Another way:
(reduce + (repeat 2 3))
In these examples, the two units of addition and repetition are blended into a new mental entity: multiplication. A mental unit is simply a program: a function in the sense of the lambda calculus.
In programming, integration is typically referred to as abstraction or ‘abstracting away’ shared logic. For example, if you find yourself writing the same code over and over for repeated addition, you cut the corresponding lines, put them in a function called ‘multiply’, and simply call that function instead. Give the new entity a name and make it more generally applicable to any two positive integers, and voila, you have formed a new concept:
(defn multiply [a b]
(reduce + (repeat a b)))
I think children basically do the same thing in their heads when they learn multiplication for the first time. Keep in mind that the brain is a computer – as such, it is programmable by the mind.
Both reduce
and apply
abstract away additional underlying concepts, and both remain available directly if required. As in: despite the integration, our minds retain some public interface for invoking repeat
and +
directly. I used to think of such underlying functions as necessarily “implicit” (really I meant ‘inexplicit’), but I now think that’s wrong: the public interface can often be invoked via language, which makes it explicit.
(Side note: there’s some overlap between reduce
and repeat
because reduce
itself depends on repetition, so maybe it’s better to use apply
instead of reduce
.)
We don’t have visiblity into mental concepts like we do source code on an external computer – yet. Hopefully, one day we will develop the requisite technology.
Integration is crucial for a properly functioning mind. Without a successful integration/abstraction of the concept of repetition, say, forming new concepts that depend on repetition is much harder. Getting fundamental concepts right is important because, by definition, they feature in many other, higher-level concepts.
Imagine you don’t mentally integrate/abstract the concept of repetition. That means anytime you need to use repition in other concepts (ie in other code in your mind), you essentially copy/paste the underlying logic for reptition into those concepts. If you find want to improve your notion of repetition later on, you have to find and update it everywhere. That’s messy and error prone. Reusing integrated concepts is essential to learning and mastery.
We can also see how Rand’s notion of the integration of “concepts into wider and ever wider concepts” maps onto ever higher levels of abstraction in code: integrate the concepts of multiplication and repetition, and you get powers. For example, 2 raised to the power of 3 is 2 * 2 * 2. Widening your concepts means “expanding the range of [your] mind.” To be clear, this process isn’t limited to math.
Integration is typically creative: you need to think about how exactly you want to blend multiple mental units into a new, higher-level concept. Once created, a well-practiced integration becomes automatic: the mind can invoke the integrated mental unit directly, without breaking it into its components or really consciously thinking about them at all. I disagree with Rand that the integrated unit “can be broken into its component units whenever required” (emphasis mine) – some integrations, like riding a bike, are difficult to break into component units once fully automated. It’s not impossible, but the phrasing “whenever required” makes it sound easier than it really is in some cases. And I say integration is typically creative because, as you get more advanced, you develop meta ideas about how to integrate certain mental units, and then those meta ideas can handle such integration for you automatically. For instance, now that you’re already familiar with repeat addition and repeat multiplication, you can figure out repeat powers basically instantly. But even far-reaching meta ideas won’t cover all possible mental units that you could integrate, so some integrations will always require creativity.
It’s no accident that programmers already understand the epistemological concept of integration, even if they have never heard of objectivist epistemology. There’s a deep underlying truth that I call the equivalence principle, which I explain in chapter 6 of my book.
What people are saying