3 ms·
I don't support the accusatory tone of the original post, but in view of this clarification, I believe the author does have a real point. The discipline of math
by mycroftiv 16y ago
I don't support the accusatory tone of the original post, but in view of this clarification, I believe the author does have a real point. The discipline of mathematics has a lot of prestige, especially in the programming community. By making use of mathematical concepts and vocabulary, Haskell has acquired a reputation as being particularly elegant and sharing in the conceptual beauty of very abstract mathematics. I struggle to understand category theory, and I struggle to understand Haskell, and I always assumed that my difficulty in precisely mapping concepts like monads between the two were because I just wasn't smart enough. (That is almost certainly the case regardless!) If thinking about the formal definition of monads isn't helpful when learning Haskell programming, is the use of mathematical terminology misleading?
- lincolnq 16y agoThis is an astute summary. Yes, it is misleading, but such is the way of language growth: when transferring concepts from one language to another, sometimes meaning is permanently mutated or lost. Consider French "journée" and English "journey". The English word is a direct loanword from French, but in French it means "day" or "a day's work" and in English it means "a set amount of travelling". The etymology is fairly natural, but the English word only captures a fragment of the French meaning. I think the analogy applies to monads as well: the word denotes/connotes something significantly different in Haskell than in mathematics. It's just the way it is. When learning Haskell, if you already know category theory you can use this knowledge to ease your understanding of the Haskell concept, but it's not a direct translation.
- chancho 16y agoPeople can disagree on the precise definition of terminology, which is why, in any serious discourse, you have to define things before you begin discussion. The great thing about Haskell (or any programing language) is that you really have to define things. Jargon doesn't compile. Nevermind the "real" definition of this or that esoteric concept. If you ask N category theorists you'll get N answers. Just import one that works for you and you're off. What seems to have gotten this fellow is that either the definitions in the Prelude/libraries didn't match his expectation, or (more likely) he was surprised by the inconsistencies between GHC and GHCi (which I also find annoying.)