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.

Note: https://www.raywenderlich.com/173352/raywenderlich-com-goes-kotlin-and-needs-tech-editors

* 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;

https://alexn.org/blog/2017/10/15/functional-programming.html

1. Sequence over Collection, Sealed Class, Object => new Class

https://medium.com/@manuelvicnt/kotlin-education-d0b958740d6a

2. Function Literal (Lambda Expression) (**)

https://tech.io/playgrounds/6973/kotlin-function-literal-with-receiver

3. “Either” Monad (**)

hcodesttps://kotlin.link/articles/Exploring-an-Either-Monad-in-Kotlin.html

4. Kotlin “DI” Dependency Injection – the “Reader” Monad vs Java Dagger: (***)

View story at Medium.com

5. Function Memoization (**)

View story at Medium.com

6. Remove all ugly “!!” with these 6 Kotlin techniques (*)

https://android.jlelse.eu/how-to-remove-all-from-your-kotlin-code-87dc2c9767fb

7. Generic Extension Function (aka Polymorphism) (**)

https://dzone.com/articles/kotlin-generic-extension-functions

8. Co-routine (Weather app demo) (***)

https://blog.elpassion.com/create-a-clean-code-app-with-kotlin-coroutines-and-android-architecture-components-f533b04b5431

Co-routine Recipes (***)

https://proandroiddev.com/android-coroutine-recipes-33467a4302e9

9. Free Monads (***)

https://github.com/JorgeCastilloPrz/KotlinAndroidFunctional/pull/6

10. Free monoids and Free Monads (***) – (in Scala codes)

http://blog.higher-order.com/blog/2013/08/20/free-monads-and-free-monoids/

11. Operator Overloading (Antonio’s Chap 11) *

https://dzone.com/articles/operator-overloading-and-conventions-in-kotlin

12. Android UI Fragments in Kotlin

https://www.raywenderlich.com/169885/android-fragments-tutorial-introduction-2

13. Design Patterns in Kotlin

https://www.raywenderlich.com/168038/common-design-patterns-android-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!
https://github.com/volodymyrprokopyuk/kotlin-sdp/blob/master/README.md

14. Static Method (Companion Object)

https://dzone.com/articles/kotlin-static-methods

15. Android Animation

https://www.raywenderlich.com/173345/android-animation-tutorial-with-kotlin

16 Kategory (***)

View story at Medium.com

17. Cross-platform strategies (***)

View story at Medium.com

18 Screenshot Testing (Espresso)

https://github.com/Karumi/KataScreenshotKotlin/blob/master/README.md

Advertisements

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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