Advanced Kotlin Education

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: (***)

View story at

5. Function Memoization (**)

View story at

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 (***)

View story at

17. Cross-platform strategies (***)

View story at

18 Screenshot Testing (Espresso)


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s