typelevel / cats

Lightweight, modular, and extensible library for functional programming.
https://typelevel.org/cats/
Other
5.23k stars 1.19k forks source link

Docs - Emphasize which typeclasses/datatypes are most important to learn #3976

Open LLCampos opened 3 years ago

LLCampos commented 3 years ago

Cats documentation lists a lot of typeclasses and datatypes. But for a newcomer, it's not clear which typeclasses/datatypes are the most useful/important.

For example OptionT is way more useful than Writer, but just looking at the docs, that's not clear at all. (You have to go to Discord for someone to point out to you that you will ~never use Write :slightly_smiling_face:)

My proposal is to somehow emphasize the more important stuff and deemphasize the less important.

I also leave here feedback by @jducoeur:

"Important" is pretty subjective, so I'd be careful about phrasing, but it's certainly true that in my current class on Cats et al, there are a handful of typeclasses and data types I'm emphasizing, and leaving most of the rest for folks to look into if and when they need them.

jducoeur commented 3 years ago

I'll note that the class I refer to above is working from Scala With Cats at the moment (transitioning soon to Essential Effects), and the organization of that book is a not-half-bad prioritized list, at least through Chapter 5 -- it's organized pedagogically, which is really the high priority for new folks.

I seem to recall that the Cats docs used to be organized that way? It looks like the index got redone to be alphabetical, which is better for a reference, but less useful for tutorial purposes.