Kotlin’s real power is to explore its Functional Programming features, besides the “cosmetic” improvement of concise codes to avoid Java’s annoying boilerplates.
* Level of difficulty (* = Simple, ** = Medium, *** = Difficult)
0. What is Functional Programming ?
This Romanian IT expert introduces us to Functional Programming (FP). He has the advices:
1) No need to know deep Category Theory (CT)- but nice to know little bit. (In Romania, the students learn CT in Grade-12 (equivalent JC2);
2) Haskell is the lingua franca of FP. Learn it to understand most FP concepts, even if you later use other FP languages (Kotlin, Scala);
3) Dynamic Type languages (Lisp, Clojure) are not good, because only Static type (eg. Kotlin, Java with “final”) can ensure Immutability which is the essence of FP;
1. Sequence over Collection, Sealed Class, Object => new Class
2. Function Literal (Lambda Expression) (**)
3. “Either” Monad (**)
4. Kotlin “DI” Dependency Injection – the “Reader” Monad vs Java Dagger: (***)
5. Function Memoization (**)
6. Remove all ugly “!!” with these 6 Kotlin techniques (*)
7. Generic Extension Function (aka Polymorphism) (**)
8. Co-routine (Weather app demo) (***)
Co-routine Recipes (***)
9. Free Monads (***)
10. Free monoids and Free Monads (***) – (in Scala codes)
11. Operator Overloading (Antonio’s Chap 11) *
12. Android UI Fragments in Kotlin
13. Design Patterns in Kotlin
This is still the old Java O-O spirit with abstract (& complex) Design Patterns brought over to Kotlin (which is FP + OO).
FP should get rid of OO thinking!
14. Static Method (Companion Object)
15. Android Animation
16 Kategory (***)
17. Cross-platform strategies (***)
18 Screenshot Testing (Espresso)