Example project showing how to use Arrow to build native Android applications. Simplest possible github client.
Build with clean architecture in mind, kotlin only. Frameworks used:
- Arrow
- Retrofit
- Coroutines
- Toothpick for DI
- Moxy for MVP
- Cicerone for navigation
- PaperDB for persistence
It may not be purely functional project, a lot of improvements needed and will be done while I'd use Arrow in production on daily basis — yet let me tell you I enjoy using this library so much. Agility that your code gets when you using functional programming concepts is beyond reach by any other means. The height of abstraction which can be implemented for you to think about your code is crazily handy — you just never knew this if you didn't try yet.
One con though — code could get slightly less readable and extremely confusing for your colleagues not familiar with fp, BUT — use it as opportunity to teach them about it. Why wouldn't you spend some time to make their life better?