I really didn't have much of an opinion on the subject but after reading this, I'm finding that the author effectively demonstrated why Functor, Monoid, Monad and most of the terms used in FP are terrible and why it's so hard to get people to explore pure functional languages. This is the opposite of what the author intended, but I was unable to find anything other than evidence <i>against</i> the argument the author was trying to make.<p>The author's central point and most of the arguments they make, throughout, prove the opposite of what they're trying to argue.<p><pre><code> The purpose of a name is a pointer
</code></pre>
The author then goes on to use this statement as though they had actually said "The only purpose" or "the primary purpose". Context, here, is <i>really, really important</i>. The purpose of a person's name is an attempt to be a unique pointer to a person.<p>From there we twist in to how ineffective the way we name things is <i>at being a unique pointer</i>. But how unique of a pointer does a name have to be? If that was the primary, only or main focus, our language would reflect that. I wouldn't tell the kids to "open the door" when I'm in the bedroom, I'd tell them to "turn the kwikset lever handle on the master bedroom door". Or I'd use the fancy name for the kind of door (it's got a french name of some kind) we have in our bedroom.<p>In the first case, I'd be providing unnecessary information. In the second, my use of a unique name to describe a unique door in our home would land in this articles "nirvana", but my kids would stand there confused since they would not be familiar with the term.<p><pre><code> Names can't transmit *meaning*
</code></pre>
Of course they can! The author is more-or-less trying to make the argument that "names <i>shouldn't</i> convey meaning", but you don't get to control what your readers do with what you provide[0]. In fact, it's clear that the <i>main goal</i> that language authors place on <i>naming things</i> is specifically <i>to convey meaning</i>. The author's argument now becomes "Names regularly transmit meaning and often the meaning they transmit isn't as accurate as I'd like it to be".<p>In fact, that an unfamiliar name was used for something where a more common, familiar term was available made understanding what a Functor was much more difficult. Had it been called Mappable, I would have been most of the way there[1]. Upon researching what a "Functor" was, I didn't trust any of the first several, simple, short answers because I assumed "if that's all it is, they wouldn't have used such an obscure name".<p>So <i>the very use of a name unfamiliar to me</i> conveyed meaning that <i>it must be a much more complicated topic, or they would have used a term that landed on the 80% mark</i>.<p>[0] Newspeak, aside.<p>[1] I didn't actually struggle with Functor, but that was the author's chosen term to focus on. For me, I think it was Monoid and Monad. I had been using F# for two years before I actually <i>looked up the exact definition</i> of those two terms. Knowing what they meant was, evidently, not important but that they were named something unfamiliar to me didn't immediately make me explore what they meant.