“Computing with space” is an expression I saw while reading about diagrammatic reasoning and visual thinking.
Tote is a kind of computing environment whose interface is a bag of unordered “objects” and a few rewrite rules. Like an abacus of symbols that a child can understand and learn to use. When I was writing about Haskell and Rust earlier, I edited out this aside:
But personally all these languages are way too big for my taste. I want like a handful of pebbles, or magic beans, that I can cast on the ground and conjure up a computational universe. Maybe that’s too much to ask.
What attracts me to lambda calculus and combinatory logic is that they show how a handful of small immutable primitives can be composed, as building blocks of logic (Bausteine der mathematischen Logik), to create a language capable of performing any computation. And maybe even bootstrap a practical software stack and environment.
I find the Curry-Howard-Lambek correspondence as profound as Maxwell’s equations that unified our understanding of electricity, magnetism, light, space and time. Some call it a computational trinity, because there’s a beauty in the relations that unify concepts and phenomena in these domains.
Theoretical physicist Murray Gell-Mann talks about in Beauty and Truth in Physics, how the elegance of a theory is a successful criteria in its being true.
To contrast, Benoit Mandelbrot’s The Fractal Geometry of Nature was intellectually innovative in taking seriously experimental mathematics that were initially considered ugly and “monstrous”. In that book Mandelbrot shows how mathematics can be an experimental science, using the computer as an instrument to explore mathematical worlds.
Mathematics is not a deductive science – that’s a cliché. When you try to prove a theorem, you don’t just list the hypotheses, and then start to reason. What you do is trial and error, experimentation, guesswork. You want to find out what the facts are, and what you do is in that respect similar to what a laboratory technician does. – Paul Halmos
I quoted earlier the physicist Frank Wilczek, about Galileo’s approach.
..He measured how fast balls roll down inclined planes. How mundane! But the learned discourses, while grand, were vague. Galileo’s investigations were clear and precise. The old metaphysics never progressed, while Galileo’s work bore abundant fruit. He too cared about the big questions, but he realized that getting genuine answers requires patience and humility before the facts.
It’s advocating for science and philosophy to be grounded in empirical research (“gaining knowledge from observation and experience”) and the experimental method. The word “mundane” is from the Latin mundus (“the world”), physical reality (the body) as opposed to the sphere of ideas (the mind or spirit). The same with music and living language: the phenomenon is the primal fact. Music theory and linguistics are descriptive models, not prescriptive rules of how things must be.
From there I can critique my mathematical mysticism, to question my “entire foundation and ontology”. Correctness and logical proofs are not always the priority, or even matter at all in some contexts. When building a machine, it must be as correct and predictable as possible despite the messiness and imperfection of the material world. When composing music, what does it mean for a piece of music to be correct? The only criteria for the truth in music is the human experience.
Finished reading Values and objects in programming languages (1982), continuing after where I stopped. (“Programming is object-oriented mathematics. Mathematics is value-oriented programming.”) It persuaded me that mathematics, while being a necessary foundation, is not sufficient abstraction for a computational medium (language or software as tool for thought) that aims to represent/express/support how a person thinks, experiences, and models “the material world, which contains things that exist in time”. The medium must adapt to the person.
The charm of Tote is that it’s a little game world, like chess or Go, made up of conceptual objects and rules to transition between world states. Applying rewrite rules is equivalent to the process of evaluating a program (or “reducing” an expression) step by step. It shows that numbers and operators, values and functions are not necessary for performing computation. How weird! It points to “computing with space” and thinking with images or sounds. Like two people drawing lines on the sand with a stick, placing rocks and moving them, as they discuss and develop a strategy.
I still want to see mathematics as the hardware on which the software of physics and biology runs. But deeper, what we’re actually working with when we work with mathematical or physical objects, is our own mind. Not in the sense of Plato’s theory of forms, the heart/mind-only school of Buddhism (cittamātra), or the prima materia of alchemy; but as a practical reality, we don’t live in the objective world, we live in a subjective experience and interpretation of it as a story - no matter how illusory, illogical or even wrong.
So a tool for thinking would not be complete if it didn’t allow for possibly incorrect, contradictory, vague or messy trains of thought. On the other hand, some contexts require thoughts to be structured, verified as true and correct, expressed clearly and precisely as possible. I’d rather live with islands of uncertainy in the ocean of truth.
These I consider works of art in the field of applied mathematics.
- Justine Tunney’s SectorLambda: Lambda Calculus in 383 Bytes
- John Tromp’s Binary Lambda Diagrams. (Also Combinatory Logic Playground and the paper, Functional Bits: Lambda Calculus based Algorithmic Information Theory.)
Like Tote, they’re sometimes seen as mere curiosity, as a coding challenge of how small or unusual a language can be. But there’s more to it, even a profound depth they’re pointing at, about the nature of computation and maybe the mind itself.
Empirical research means performing experiments, testing hypotheses, making observations, producing artifacts. It’s where theory meets reality, and reality suggests theory.
I wonder, would it be helpful to have a collaborative space for writing and running programs?
Like play.malleable.systems for code snippets, sketches, prototypes to demonstrate ideas. Might be nice to have a single place where people can see and show malleable systems and ideas in action, for example, a running instance of HyperDoc, FreeWheeling apps, Uxn programs, Cardumem wiki, Lopecode, Decker, etc. It could be a Git repository with anything that can run as a standalone static HTML page.




