Open milesfrain opened 3 years ago
I just found this case right here. I was reviewing the solutions that were made to compare to my solutions, and did not expected a pattern matching solution that only appears on the next chapter. Worth mentioning that my solution did not use pattern matching, of course. (duplicated https://github.com/purescript-contrib/purescript-book/issues/303)
I did a pass through the issues collecting all the suggestions and through code gathering the topics.
TLDR. I don’t think we need to redo or move a lot of stuff around. I propose a few swaps (for example, swap chapters 4 and 5) and then extend content based on the existing (or future) issues and confusions.
Additionally, I’d like to break (some) chapters into subchapters to make it easier to navigate and digest. (see Rust book
Note that I’ve been focusing on content – not exercises; I think these could be added ad-hoc afterwards.
where
indentation https://github.com/purescript-contrib/purescript-book/issues/397flip
to Chapter 4 with more description and new repl output https://github.com/purescript-contrib/purescript-book/issues/326 https://github.com/purescript-contrib/purescript-book/issues/260Unit
with no explanation https://github.com/purescript-contrib/purescript-book/issues/340do
notation and pure
without discussing bind
and related typeclasses. https://github.com/purescript-contrib/purescript-book/issues/340
Maybe
) before do
notation https://github.com/purescript-contrib/purescript-book/issues/212combineList
and sequence
https://github.com/purescript-contrib/purescript-book/issues/155Either e
https://github.com/purescript-contrib/purescript-book/issues/162
Some of the book's content is presented in a non-ideal sequence which frustrates beginners in the following ways:
Maybe
before ADTs,Unit
with no explanation,do
notation andpure
without discussingbind
and related typeclasses).One simple improvement is to cover pattern matching (ch5) before recursion (ch4) (highlighted in #303). We should also cover ADTs (and
Maybe
) beforedo
notation (proposed in #212).But I think the book would really benefit from a more systematic restructuring where we do something like the following:
We could also push more of these topic explanations to other language reference locations (e.g. docs repo and library docs), then link to those from the book. That way, the book will serve more as a guide on learning sequence with accompanying exercises to avoid duplicating content.
I think there would also be value of distinguishing a minimum set of "core" concepts that all users must know (e.g. functions, ADTs, typeclasses, etc. - noted in https://discourse.purescript.org/t/guide-to-learn-purescript/2308/4) from the supplemental topics (e.g. generative testing, canvas graphics). This could be noted in the book's introduction.