Since I asked the questions, I should answer them too! 😄
I've found this book much better to follow than the Red Book. I think primarily because that one was in Scala, which I had no experience with.
But also because since then I've absorbed quite a bit about FP through other sources like #arrow, blog posts, etc.
There's something that I've noticed with FP - at least for me - after reading or learning something new, it takes a while for the meaning and implications to start to deepen. Amazingly this appears to happen without any direct additional effort on my part, other than just continuing to maintain FP as an object of interest.
I also dive into the Arrow source code sometimes, especially for the parts that seem to come up a lot in readings or usage - data types like Either, and typeclasses like Functor, Applicative, and Monad, for instance.
For the first year or so of FP I was quite intimidated by its seeming complexity and foreignness, and I avoided reading the source because I figured it would be too overwhelming. Maybe my head would explode or something.
And it was overwhelming, actually. But returning to it repeatedly has yielded slow but steady improvement in my understanding.
I'm on chapter 8, which has been the most challenging so far, followed by chapter 7. These chapters deal, not with the nuts-and-bolts of FP, but with functional design. Giving myself permission to go as slowly as I need to to reach full understanding seems to be a good approach for me.
I've also found that refactoring code that I have trouble understanding, into a form that makes sense to me, (while remaining true to the correctness of the original code, of course) has been helpful. It allows me to keep moving forward even when I'm "stuck" on a chapter.
I am trying to do all the exercises. But I sometimes skip ones that are either too easy, or too hard but that I want to return to later after the subconscious learning processes I mentioned earlier have had an opportunity to do their work.
I am applying it, as much as I can reasonably, to an Android project that I'm the sole developer on. But I have to be cautious about not getting in too over my head. And I have to keep in mind that, the deeper I go, the more likely Android devs coming to the project could find it all as foreign and intimidating as I used to.
But the release of arrow-fx-coroutines Streams means that an FP Android project actually now looks a whole lot like one using a reactive streams architecture with Rx. That's a big win, I think, for FP gaining wider usage in the Android community.