4 ms·
Read this: http://learnyouahaskell.com/chapters http://learnyouahaskell.com/chapters Just don't skip chapters and read from the beginning to the end.
by ycmbntrthrwaway 10y ago
Read this: http://learnyouahaskell.com/chapters http://learnyouahaskell.com/chapters
Just don't skip chapters and read from the beginning to the end.
- alok-g 10y agoYou advice here may be good; am not questioning that. However, question does come why can't there be a shorter explanation for people who already know programming. Most people are unable to explain it well, or at all, leading me towards a belief that they don't get it themselves as yet.
- ycmbntrthrwaway 10y agoYou can explain what a monad, for example, is, in one sentence, but it is useless if you don't show how it is used. Similarly, you may know what eigenvector, or derivative function, is, but without practice you can't understand why you may want it.
- alok-g 10y agoI'm not looking for a single sentence explanation or definition. I'm willing to read more, and the structure you suggest of showing precisely worded definitions along with positive and negative examples would be great! However, I would not want to start with reading how to install a compiler, how to add two numbers in Haskell, etc. I have similar issues elsewhere when people start with hello worlds and getting started in introductions to projects and programming languages without spending enough time on what the thing is about.
- pyrale 10y ago> why can't there be a shorter explanation for people who already know programming. Why can't you learn chinese very fast if you already know a handful of european languages ? The answer is the same : the underlying concepts are different. Sadly, there is no easy shortcut to understand these concepts. The best that can be done (and it's hard enough already), is to make learning entertaining.
- alok-g 10y agoThe line of reasoning you have is correct as such, however, I find the analogy to be less than perfect. I do not need to be taught how to setup my computer for Haskell compilation or how to add numbers in Haskell to understand what is a monad.
- aninhumer 10y agoEh, I think you can skip most of the chapters if you've learned functional programming before. The important things to learn are typeclasses and higher kinded types. I think half of people failing to understand monads are people failing to understand typeclasses or HKT while trying to learn about monads. Once you get those, all you need is the Monad typeclass definition and a huge pile of motivating examples.
- tnone 10y agoYet people learn best from examples, so I don't get why every monad explanation is in reverse like that. The Z is Y. The Y is an X that does W. ...omitted... Here's C, B and A. Now you understand! First comment in this thread is exactly like that. Definitions, not explanations. And then after telling you how monads are different than map for things that are _not_ lists, a bunch of follow up comments talk about... Lists. Pedagogy does not work like that. What is it about haskell that ruins people's ability to explain things?
- aninhumer 10y ago>The Z is Y. The Y is an X that does W. I'm not saying you shouldn't use examples to learn, I'm saying you should probably learn X and Y (type classes and HKT) before you try to learn Z (monads). Use as many examples as you like to learn them, but if you don't understand type classes and HKT, you will probably struggle to understand monads.
- jnordwick 10y ago> What is it about haskell that ruins people's ability to explain things? Haskell is the most maddening language to learn purely because of the community around it.