Replies: 2 comments 8 replies
-
Whilst I understand where you're coming from, there are deeper meanings to most of the terminology that can become blurred when you start inventing new 'pragmatic' names. A functor, for example, is a structure preserving morphism between two categories in category theory. Now, you don't need to care about that right now whilst learning that "functors have a Map function", but as you become more skilled in functional programming and understand more of the theory behind it, you'll realise that calling functors So, a term that changes depending on your skill-level is, I would argue, worse. It's better to learn them upfront in my humble opinion. As a fellow ADHD sufferer I've not found it particularly problematic, it's just a case of getting used to a different paradigm's lexicon. It's not like OO doesn't have a similar problem with terminology: polymorphism, instance, inheritance, object, class, method. You may think that - other than 'polymorphism' - they're easy to understand, because they're words from 'real life'; but they are all misleading terms that cause massive problems due to their apparent ease-of-use. They're imprecise and often outright lies! But because they're common terms we think it "makes more sense". But, what happens with OO is you learn the terms quickly and then spend a lifetime dealing with the fallout of their imprecision. For example, "object", in the real world objects don't mutate in-place, they have a history, time exists, and causality holds. That isn't true for OO objects. Objects in the real world don't have behaviours attached to them. They are pure state. Yet we attach behaviour to our state in OO-land. This problem exists for most OO terms and I think it causes some pain points, especially dogmatic pain points. FP has its own lexicon, which is (on the whole) more precise - mostly because the terms are from mathematics. However, because the terms aren't used day-to-day they can initially seem impenetrable. But, once learned there isn't the same long-tail of misunderstanding as there is in OO-land. |
Beta Was this translation helpful? Give feedback.
-
the irony We all draw lines somewhere, and similarly displeased to find ourselves on a different side of someone's else line... |
Beta Was this translation helpful? Give feedback.
-
Currently reading https://paullouth.com/higher-kinds-in-c-with-language-ext-part-2/
Decided to write a comment at the following paragraph:
While I'm excited about functional programming, not all of established names speak to me.
Some just leave my ADHD brain without a mark. I still have an idea of a computational flow, but I have no word to refer to it.
I wish people could let go of the self-reproducing loop of terminology, and for the worst offending terms, switch to something more descriptive for average minds. So the whole functional programming could be made friendlier...
While part of audience can appreciate parallels with Haskell, other part could probably better appreciate parallels with more pragmatic naming of standard C# functions. Albeit I can imagine their existence might be the reason to avoid collisions...
I don't expect to convince any change, but I need the discussion to exist.
At the very least, it may motivate better documentation. Be conscious about the difference between what is familiar and what is sensible/descriptive.
Beta Was this translation helpful? Give feedback.
All reactions