Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Monoid is a semigroup with an identity, and also a group without inverses.

Classic. Sometimes Haskell fans have useful things to say, and sometimes they're just using terminology to try to win an intellectual dick-size war. The tricky part is telling the two apart.



It's basic abstract algebra - this is literally stuff I learned in a math class 12 years ago. It's used in hojillion papers, some abstract and some concrete and highly relevant to real world problems (including encryption and linear algebra - both of which can be directly useful to programmers), and they're not even hard. Just learn some math - this is undergrad stuff.


The concepts themselves aren't difficult to understand. It's just that some people go out of their way to use uncommon terminology that ends up obscuring what they're trying to say, rather than making it clearer.


Is there more common terminology for "a set with a binary operation that is associative and has an identity"?


Any name that we'd come up either wouldn't capture the general case or would be just as arbitrary as Monoid ( ignoring historical usage). The gist of this argument is that Pacabel and the like can't describe the concept using the traditional OOP evocative naming style but insist that term "Monoid" is wrong because of some irrational aversion to terms from abstract algebra. There's really nowhere for this argument to go...

Imagine trying trying to describe a monoidal category or topoi in the OOP style, it's like trying to describe what a Fourier transform is to someone who insists on using roman numerals.


> it's like trying to describe what a Fourier transform is to someone who insists on using roman numerals.

Or describing Latin declensions to someone who reads kanji. The key is that, if the audience admires Latin speakers, you can appear smart.


You're right, why use precise language to describe abstract concepts when we could just communicate knowledge using longform metaphors and cryptic analogies. Or maybe we could just grunt at each other like animals.


It's good to use precise, specialised language to communicate with other people who are familiar with that specialised language. Using specialised language to "explain" another piece of terminology from the same specialised vocabulary, though, doesn't create the impression of someone who is genuinely interested in communication.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: