2 ms·
No. You desperately insist on giving them meaning. And sometimes, which is worse, the meaning you want to give them is completely unrelated or even opposed to e
by klibertp 12y ago
No. You desperately insist on giving them meaning. And sometimes, which is worse, the meaning you want to give them is completely unrelated or even opposed to everything they are or do.
Aside: You realize that the word "monad" (and "dyad") already has a very specific meaning and that you assaulted that meaning and now are trying to beat the poor word into submission? If I had to choose I'd say that J programmers have much more of a right to use and define this word: a single-argument function ("mono") makes more sense to be called a "monad" than an instance of "flat-mappable" interface.
> since its part of the actual syntax of Haskell do-notation
It's not, which makes using it even dumber - as it's no problem at all to change it.
F# uses monads extensively, as one of the selling points of the language, yet the m-word rarely if ever is mentioned in the docs. That's because designers of that language were rational enough to realize that "computation expression" is a name that both conveys some basic intuition about the thing in question and is concise enough to allow talking about the thing abstractly. From my perspective I don't see any, at all, arguments for persistent use of the M-word by the community of some programming language. Other than trying to be different, or something.
Believe it or not, names do matter. Good name speeds up learning/understanding considerably; a bad name slows it down. It's sometimes - rarely! - worth it to invent completely new name. That's when the thing you want to name really is dissimilar to anything else and when re-using some name would introduce false intuitions about the object. But monads ARE NOT SUCH THINGS (sorry for shouting). "You could have invented monads", and quite possibly you did a few times already, and that probably wouldn't be the case if the idea was that ground-breaking, that unprecedented.
Ok, nevermind - I'm getting angry for no reason, I should stop it already.
- dragonwriter 12y ago> You desperately insist on giving them meaning. They have meaning in the same sense that any words have meaning -- that is, they communicate meaning between an existing group of people. > And sometimes, which is worse, the meaning you want to give them is completely unrelated or even opposed to everything they are or do. Like many words, their meaning in a specific technical context differs from their meaning in other contexts. This is not particularly unusual. > Aside: You realize that the word "monad" (and "dyad") already has a very specific meaning "Monad" has several distinct well-established meanings in different domains besides its use is Category Theory (and thus Haskell). So what? > and that you assaulted that meaning and now are trying to beat the poor word into submission? The meaning of "monad" in Haskell comes directly from its meaning in Category Theory, which is inspired by (though not the same as) its earlier use in mathematics stretching back to its use in metaphysics (particularly, through Leibnitz's Monadology), which has its roots in its use in Classical philosophy, from whence also comes all its other uses. > If I had to choose I'd say that J programmers have much more of a right to use and define this word Well, you don't have to or even get to choose that; words can and do have uses in different contexts and you don't get to choose one and make it the exclusive use of the word because you like it more. > a single-argument function ("mono") makes more sense to be called a "monad" than an instance of "flat-mappable" interface. Not really. Sure, a single argument function might have a better claim to the title "mono-argument function" but "-ad" isn't generally a suffix that means "-argument function".
- klibertp 12y agoOk, so I was rather rude unnecessarily, sorry about that. I agree with what you wrote about words: > words can and do have uses in different contexts and you don't get to choose one and make it the exclusive use of the word because you like it more. it's just that I think the same applies to concepts. You shouldn't be able to "own" the concept and to insist that it should be called as you want in every context. I see comments and posts about how "X or Y is just a monad!" to be exactly this: people trying to "own" a concept. Just as both musicians, mathematicians and programmers can all use a single word for different things, different programmers should be able to use the same concept without using the same word for it. In short (directed to random commenters on the Internet, no to you personally): stop correcting me when I say "computation expression builder", don't say that what I "really mean" is a monad. It's not, what I "really mean" is an abstract concept and we both know its properties, and you have no right to oppress me because I chose different word for it.