Randomly came across this comment, in a video about epicycles:
> it's amazing how much simpler the truth can be than you trying to bend over backwards to make reality fit your preconceived notions
By no means I'm saying that I'm right; I'm just offering you an unusual perspective. When I read that comment, I couldn't help but connect geocentrism to one modern concept:
*the function*
This isn't just about programming paradigms, it is broader than that. At the heart of mathematics lies the calculus, and, at its core, lies the function: a deeply ingrained, core axiom of all human sciences; a concept as universal and unescapable (for the modern mind) as the idea that the Earth was the center of the universe (for these back then).
But what if functions are just... the wrong point-of-view?
If you just go ahead and try to implement a "function evaluator", complexity and ugliness unavoidably emerge in ways that, to my eyes, look suspicious - not unlike epicycles. Despite decades of efforts, there isn't a single implementation of beta-reduction that feels canonical. From closures, to sharing graphs, to supercombinators or to bottom-up beta-reduction; it is hard to look at any of these and not feel like they're artificial, or, at the very least, human-engineered to an extent. What does that hint?
There is an exception, though. In 1990, Lamping described an algorithm capable of evaluating λ-terms optimally, in the sense that it would always perform the minimal amount of beta-reductions. This algorithm was not just fast - it was elegant, beautiful and natural in a way that, to my eyes, felt canonical. Yet, it had one problem: in its most natural form, it didn't cover all λ-terms. Fortunately, Lamping himself found a solution; an extension to the "abstract" fragment of his algorithm, that allowed for full functional coverage. Yet, such extension made the system considerably more complex and, arguably, less elegant. What does that hint?
Now, one could argue that implementation doesn't matter, and isn't an indicative of truth. Perhaps functions are just hard to compute fast, but, so what? They still are, mathematically, the right framework to model nature - right? That's a point of view that I think most mathematicians would hold. Yet, if that was the case, then, how came functions keep breaking math itself, over and over?
In 1901, Russel discovered his infamous paradox, which broke the original set theory, showing that unrestricted comprehension was inconsistent. In 1931, Gödel's incompleteness theorems showed that any consistent formal system containing arithmetic is incomplete. In the 1930s, Church, Kleene and Rosser discovered the untyped lambda calculus was inconsistent. In the 1940s, Curry discovered a paradox in combinatory logic. In the 1970s, Girard discovered that the polymorphic lambda calculus, also known as System F, was inconsistent with unrestricted comprehension, leading to the development of predicative type theories.
In fact, up to this date, modern proof assistants such as Lean and Coq now include a concept of "universes" - an annoying restriction that segments the language in many different layers, breaking modularity and making it terrible to work with in many occasions. I don't think anyone would argue they feel natural or welcome - rather, they're an ugly inconvenience we've learned to live with, as they're a solution to Russel's paradox. Even that isn't enough - positivity check, structural recursion. Many other "inconvenient restrictions" must be carefully placed to avoid breaking the universe and deriving an inconsistent type theory.
But what does that all hint?
Well, here's the thing - the amazing coincidence nobody talks about. All - absolutely all - the inconsistency proofs we found so far, when translated to type theory, map to a λ-term that lies, in an amazingly cosmical coincidence, in the set functions that can't be evaluated soundly by Lamping's abstract algorithm. To me, this feels surprisingly close to a civilization finally figuring out a way to model the solar system based on elegant elliptical orbits, but failing to get the hint that this implies the sun is at its center. So, they keep trying to make the geocentric model work by adding more and more complex epicycles, instead of considering that perhaps their fundamental assumption - that the Earth is the center of the universe - might be incorrect.
By all means, I could be wrong. Exploring this point of view did lead to HVM and Bend, but these still have a long, long way to go before they're stablished and respected as valuable alternatives to existing languages and architectures. From the mathematical standpoint, abandoning the full function in favor of lighter, affine variants (or, if you're brave, raw interaction combinators) would allow one to construct a consistent type theory with axioms that feel morally wrong, such as type-in-type, insanely dependent functions, and the most elegant proof of function extensionality that I've ever came across - although, at that point, I concede "function" might be a huge misnomer. Regardless, I do wonder if important discoveries would be unlocked once we look at this place, and I personally bet interaction combinators will be heavily important in the future, once we exhaust all ideas we have to making circular epicycles. But that's just my unorthodox point of view.