[Haskell-cafe] Category Theory woes
ajs at 2piix.com
Thu Feb 18 17:47:39 EST 2010
On Feb 18, 2010, at 2:08 PM, Nick Rudnick wrote:
> my actual posting was about rename refactoring category theory;
> closed/open was just presented as an example for suboptimal
> terminology in maths. But of course, bordered/unbordered would be
> extended by e.g. «partially bordered» and the same holds.
And my point was that your terminology was suboptimal for just the
same reasons. The difficulty of mathematics is hardly the funny names.
Perhaps you're not familiar with the development of Category theory.
Hans Aberg gave a brief development. Basically, Category theory is
the RESULT of the refactoring you're asking about. Category theory's
beginnings are found in work on differential topology (where functors
and higher order constructs took on a life of their own), and the
unification of topology, lattice theory, and universal algebra (in
order to ground that higher order stuff). Distinct models and notions
of computation were unified, using arrows and objects.
Now, you could have a legitimate gripe about current category theory
terminology. But I am not so sure. We can "simplify" lots of
things. Morphisms can become arrows or functions. Auto- can become
"self-". "Homo-" can become "same-". Functors can become "Category
arrows". Does it help? You tell me.
But if we're ever going to do anything interesting with Category
theory, we're going to have to go into the realm of dealing with SOME
kind of algebra. We need examples, and the mathematically tractable
ones have names like "group", "monoid", "ring", "field", "sigma-
algebras", "lattices", "logics", "topologies", "geometries". They are
arbitrary names, grounded in history. Any other choice is just as
arbitrary, if not more so. The closest thing algebras have to a
unique name is their signature -- basically their axiomatization -- or
a long descriptive name in terms of arbitrary names and adjectives
("the Cartesian product of a Cartesian closed category and a groupoid
with groupoid addition induced by...."). The case for Pareto
efficiency is here: is changing the name of these kinds of structures
wholesale a win for efficiency? The answer is "no". Everybody would
have to learn the new, arbitrary names, instead of just some people
having to learn the old arbitrary names.
Let's compare this to the "monad fallacy". It is said every beginner
Haskell programmer write a monad tutorial, and often falls into the
"monad fallacy" of thinking that there is only one interpretation for
monadism. Monads are relatively straightforward. Their power comes
from the fact that many different kinds of things are "monadic" --
sequencing, state, function application. What name should we use for
monads instead? Which interpretation must we favor, despite the fact
that others will find it counter-intuitive? Or should we choose to
not favor one, and just pick a new arbitrary name?
More information about the Haskell-Cafe