An idea came up at lambda jam that I'm not sure whether it is feasible or even useful. A recurring problem that people seem to have (including me) is the sheer breadth of concepts in FP and the difficulty that that presents when trying to prioritise what they should learn next to get closer to being able to solve their problems. The idea was some kind of map / "fp skill tree" which could be used to get a high level picture of the ecosystem and how all the bits related.
For instance, a question that this tool could be used to answer would be:
- I have a problem where I have some kind of longish computation and which I need to interleave effects into without making my code ugly and hard to compose. What can I use for that?
- Pipes looks like a good start for this, but what prerequisite knowledge will I need to fully grok pipes? Where can I find documentation, books and tutorials on pipes?
- Whoa, that depends on lens for some things and lens looks conceptually wide and dense, do I actually need to fully understand all of lens to use pipes for what I need it for?
Has anything like this been tried before? Do people even think that it is a sensible idea? My thoughts:
- It would be a lot of work.
- Even once it was 'done' you'd need someone fairly constantly active in keeping things up to date and moving.
- I regularly forget all the prerequisites that I've had to wade through to get to my current level (which makes me a really lousy teacher) so it'll be hard enough to enumerate all of those previous steps.
- It'd be also difficult to present the documentation in such a way that it didn't scare the daylight out of newcomers.
- Everyone has different problems so it'd be hard getting good coverage over the ecosystem without a diverse set of contributors.
- The haskell ecosystem is changing so much and so quickly that it is difficult to even fully keep up.
- But I think that all of the above points are a reason to do it rather than to avoid it; you can't have every newcomer paying the cost of stumbling there way through themselves if they aren't lucky enough to be in city with an awesome FP community like ours.
Ideally you want to create something as awesome as Stephen Diehl's tutorial (http://dev.stephendiehl.com/hask/) which has the extra information of how the things relate and what you should know before skipping to that step.
Feel free to comment on this gist if you have ideas / criticisms / guidance.