Hacker News new | ask | show | jobs
by the_af 1951 days ago
I really... don't understand your objection. What's silly about using the word "associative"? That's high school level stuff, not rocket science.

What about words like "operator", "function", "mapping"? Those are all from math too.

1 comments

Associative - nothing. But "Monoid 'Natural Numbers under Addition'" is a fancy name for adding numbers since we don't really care about the concept of monoid in this case.
But we do care. Once you put a name to something, you realize it can generalize beyond numbers and addition. If you don't name it, you don't see the generalization. And these generalizations matter a lot because Haskell is built out of them.

Besides, learning what a "monoid" is is not harder than learning what a for-loop is or a hash map. They aren't natural concepts, but they are easy to learn by programmers.

I don't think it matters in this specific case. (and if the generalisation really matters, why would we restrict it to natural numbers?) Sure, every single concept mentioned is simple in isolation - but put enough of them together and it's starting to become an effort to process unless you're used to that kind of communication.

To compare it to spoken communication, there's a threshold where very formal queen's English from an extremely eloquent person makes them sound like an obnoxious showoff rather than fancy and serious. I feel like posts about Haskell often touch that threshold without a good reason. But that's my very subjective opinion.

> why would we restrict it to natural numbers

We don't, that's the point. We abstract it above numbers, so that we can find that lists and natural numbers and many other things share the same "shape" when looked at from certain perspectives.

It's not about showing off, but about finding generalizations -- finding the "shape" of things -- that allow us to use the same abstractions over them.

And to talk about these shapes, we must use the appropriate vocabulary. It's shorter and more precise. Just like you say "function" instead of explaining what it means in lots of words every time you mean function.