@suppi I would split "Extras" into "Pragmatic" and "Theoretical", and place
- optics (Lens, Prism)
- type families
- DSL embeddings with final tagless and free
under "Pragmatic", and
- λ-calculus
- template haskell
- dependent, linear and session types
under "Theoretical".
@jonn I really don't want to mention type level programming in this article. I don't think they are relevant when talking about the bottom of the Haskell pyramid.
@jonn Sorry I don't understand? I don't think I mention parsing explicitly other than offhandedly when mentioning typeclasses. Also, I've never used ParserT before so I don't see this is an issue.
@suppi fair, but IIRC `Parsec` in parsec family of libraries is just a type alias for their transformer over Identity. I remember that as a beginner trying to do top-down parsing into a data structure, I was glad that I knew that monads aren't composable and that I can stack them with transformers. :)
@jonn when I wrote about parsing I was thinking about cli argument parsing using optparse-applicative, or json parsing using aeson, rather than parsec or megaparsec :) I probably wouldn't use parsec/megaparsec if I didn't really like compilers.
@suppi haha, my experience is completely opposite. I can't wrap my head around parsing with aeson and avoid it as much as I can, trying to get away with `deriving Generic` as much as I can, whereas I use combinator parsing everywhere because it hits the sweet spot between being imperative enough to have that "Turing-complete" and declarative enough to read like a formal grammar.
@jonn It's not that I like one over the other, it's that I think they are more common from a beginners perspective :)
@suppi absolutely!
@jonn I changed it to "property-based testing and QuickCheck". Thanks :)
@suppi well, my suggestion was more than a mere nit-pick. I think that we should teach beginners hedgehog, not quickcheck and megaparsec, not parsec.
@jonn I don't mention parsec or megaparsec in the article, and I disagree with hedgehog being better than quickcheck. I've used quickcheck extensively and I think it's a good library and that there are good tutorials for it out there, hedgehog crashed my computer by consuming too much memory within 2 hours of use.
@jonn I do appreciate the feedback, but I want to recommend things I have good experience with.
@suppi oh, it's not a problem! My feedback is simply an opinion. I love Haskell for the fact that one can use whatever they are comfortable with and get good results.
@jonn Agreed, Haskell is really cool and I use it for pretty much everything. I wish more people use it!
@suppi I would place transformers before parsers because it would make it harder to understand ParserT and lifting, but keep mtl where it is as a broader application.