3 ms·
I'm not bad with haskell and I like it a lot. I meant like beginner as in a beginner in programming in general. I feel the only reason why I was able to pick i
by crimsonalucard 11y ago
I'm not bad with haskell and I like it a lot.
I meant like beginner as in a beginner in programming in general. I feel the only reason why I was able to pick it up really quickly and like it was because I wasn't a beginner.
- Arcanum-XIII 11y agoNot too sure about it - some things are very different than your imperative or OO language. But then it offers lot of guarantees that help a lot.
- crimsonalucard 11y agoSure but those guarantees mostly help the user deal with problems when your application gets really complex... issues beginners don't really think about.
- wz1000 11y agoRecursion and loops will be equally alien to a beginner. Here[0] is an interesting blogpost by somebody who learnt Haskell as their first programming language. Mutation and regular imperative programming are as alien to her as immutability and functional programming would be to somebody who has exclusively programmed in an imperative language. [0]- https://superginbaby.wordpress.com/2014/11/18/learning-haskell-as-a-nonprogrammer/ https://superginbaby.wordpress.com/2014/11/18/learning-haske...
- crimsonalucard 11y agoI doubt that. Loops are way more intuitive than recursion. In other words, it is easier to think of something as a series of repeating steps then it is to think of something as a self referential entity.
- efnx 11y agoIn recursion you don't necessarily have to think about self reference. Instead simply think of the return value of the function. I think the only time I use recursion in Haskell is when I need to mutate some parameters over a set of items (which is often) but I don't have to think about the fact that the function is recursive - I only have to ask myself "how do the parameters change while traversing the set?" Lastly, if you don't like the idea of recursion you can often do the same with a fold by keeping your parameters in the accumulator as a tuple or other such sum type. My main point being that none of these things (programming patterns and strategies) are intuitive until you have some background.
- crimsonalucard 11y ago>My main point being that none of these things (programming patterns and strategies) are intuitive until you have some background. That's my point. I'm saying in addition to this, loops are by far one of the easier patterns and strategies to become familiar with. think about it. By knowing what a function is... recursion can be taught as a logical next step without introducing any additional language primitives. Yet most computer science classes will still teach looping syntax before even touching upon recursion. Why? Because looping is way easier to grasp then recursion, theoretical elegance be damned.
- deleted 11y ago[deleted]
- efnx 11y agoI think most CS courses teach imperative style first because it was developed first and there are more practitioners and teaching materials.
- efnx 11y agoI'm saying that most people are biased towards loops and mutation because they learned them first. It's like riding a skateboard vs riding a bike. They're equally challenging if you know neither.
- coolsunglasses 11y ago>I doubt that. Loops are way more intuitive than recursion. Linked individual is my coauthor. She finds recursion far more intuitive than loops and mutation, so - don't doubt. It's also easier to write recursion out on paper in a way that is faithful to the program semantics. Loops require tracking state off to the side. Debating this point is useless. Operating a crane is not more natural than picking a pile of dirt up in your hands and carrying it. It's more efficient anyway.