Did Functional Programming get it wrong?
I don&#x27;t understand what this article is trying to say. The snippets of category theory just seem to be technobabble: While they are all &quot;mathematically true&quot; (upto a generous reading), they don&#x27;t really &quot;make sense&quot;.  It reads like the output of a well trained statistical&#x2F;neural language model on the #haskell IRC channel.<p>For example:<p>&gt; The act of “unbundling” functions (lambdas) from their traditional containers is really what Serverless and the Functional Programming movements are trying to do<p>I have no idea where the author got this impression about the functional programming movement (insofar as such a thing exists) is trying to do. For a reasoned view on functional programming, check &quot;Why functional programming matters&quot;<p>&gt; In FP, you are either writing functions or doing something else (like gluing or wiring functions together). Simply put, a monad is an industry-generic term for that “something else”.<p>That is meaningless. A monad is a precisely defined mathematical object in category theory.<p>&gt; Technically, monads are instances of special ‘containers’ called monoids (sets) that manage the above activities.<p>This part of the article manages to completely misunderstand or misrepresent what monoids are. They are not just &quot;sets&quot;, they are sets with additional structure on them.<p>&gt; Incidentally, the most troublesome spot for both OO and FP has been homotopy type theory, which is similar to the debate over the mutant creatures that emerge from relational joins<p>Uhh, no? HOTT does not come from relational joins, it comes from a desire for a constructive viewpoint of mathematics in which one can encode proofs well, so we can check proofs on our computers.<p>&gt; ..  databases and programming <i>will</i> converge — and something called the Curry-Howard correspondence suggests we cannot ignore this forever.<p>I don&#x27;t understand what this is trying to say, but on a simple reading, this is blatantly false. While curry howard provides a way to connect proofs in proof systems to lambda calculus, _(relational) databases don&#x27;t use lambda calculus_. Instead, they&#x27;re based on (surprise surprise) relational algebra, for which I don&#x27;t know of a curry howard style analogue.<p>&gt; Meanwhile, the geometry community will talk in terms of topos, sheaves and data (note how a spreadsheet is sorta both code and data at the same time).<p>Wow, that is _such_ a misrepresentation of how mathematicians use &quot;data&quot;. The word &quot;data&quot; is usually meant to encode &quot;some structure owned by the mathematical object&quot;. One often reads sentences like &quot;the galois group encodes data about the field&quot;, the &quot;data&quot; is not the &quot;dual of code&quot; or some such nonsense.<p>&gt; That’s probably why applying algebraic “lambda calculus” to geometric problems (remember XML?) tends to be a rather unpleasant programming endeavor.<p>Why is XML geometric? What is this guy talking about? Can he even define a category? (Forget a topos)<p>&gt; Vendor software is often needed to establish a “standard” way to assign names to lambdas so we can find them. Mathematically speaking, this is the job of homotopy. On the other side of the Yoneda “tunnel” we find something called an Eilenberg-Moore (EM) category (technically the flip side of Kleisli) and other alluring blobs like Serre subcategories and Segal spaces. None of which get much play in computer science.<p>Thi is once again, meaningless. Homotopy is a geometric idea about deformations, which in homotopy type theory gets utilized to define equality. But again, this has nothing to do with naming!<p>Also, elinberg-moore and kleisli categories are very well known. Open any category theory text, this will a part of the adjoints chapter. Indeed, you can search on hackage and find packages for it: <a href="https:&#x2F;&#x2F;hackage.haskell.org&#x2F;package&#x2F;streaming-0.2.2.0&#x2F;docs&#x2F;Streaming-Internal.html" rel="nofollow">https:&#x2F;&#x2F;hackage.haskell.org&#x2F;package&#x2F;streaming-0.2.2.0&#x2F;docs&#x2F;S...</a> for example.<p>&gt; In category theory, we call these “adjoints”, as in “joins”. If you ask the memoization crowd they sometimes actually do think in terms of SQL joins. In the database world, this is like joining keys of a schema.<p>What? Adjoints are not about joins. They are kind of generalization of inverses. Once again, this just reads like technobabble<p>&gt; Haskell devs have to manually tinker with adjunctions and monads because in-memory data support is pretty dumb<p>What in memory support? What do monads have to do with anything in memory? Monads are a structure that we use to structure code, it has nothing directly to do with &quot;memory data support&quot; or whatever this guy is on about.<p>&gt; If we follow Yoneda and accept that topology (geometry) and algebra are two different worlds, then we can “attach” functions to the fabric (geometry). But in a “serverless” world, what is this fabric?<p>What in the world is he on? How does Yoneda (where I presume he is referring to the Yoneda lemma) say this? Also, more importantly, much of Category theory exists to explore the _duality_ between algebra and geometry, it says nothing about them being &quot;two different worlds&quot;. The very existence of Algebraic Topology means that geometry and algebra are married to each other --- not to mention the other objects mentioned in the technobabble above (topoi, grothendeick categories) arose from Algebraic Geometry, which, guess what, combines geometry and algebra...<p>At any rate, the entire point of the post is to sell their &quot;Multix 2&quot;: <a href="https:&#x2F;&#x2F;www.codecraft.ai&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.codecraft.ai&#x2F;</a><p>From this post, I have lost all confidence in whatever it is they are building...