Google officially supports Kotlin from May 2017

Kotlin is the “New Java” officially supported by Google from May 2017! It is less verbose (罗唆) than Java which is clumsy with boilerplates (样板),  interoperates with Java on JVM, with modern functional programming features, and most importantly, it is Multi-Platform : Java, Android, Javascript,  and future versions run as native codes on iOS, MacOS and Linux (Microsoft – work in progress). This eliminates the current headache of having to re-write the same applications for different platforms in different languages.

Google makes Kotlin a first-class language for writing Android apps

https://blog.plan99.net/kotlin-fp-3bf63a17d64a

Kotlin Tutorials

https://kotlinlang.org/docs/tutorials/

https://developer.android.com/kotlin/get-started.html

Hands-on: 

https://try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Hello,%20world!/Task.kt

Two ways to program in Kotlin:

1) Google way:  Download Android Studio 3.0 (with Kotlin and Java 8 Support): 

https://www.xda-developers.com/you-can-download-the-canary-1-build-of-android-studio-now-supports-kotlin/

2) (Old Way) Use Jetbrains “Intelli IDEA for Kotlin” – now  packaged in Android Studio 3.0

https://kotlinlang.org/docs/tutorials/getting-started.html

Resources:

https://antonioleiva.com/kotlin-android-developers-book/

https://www.amazon.com/gp/aw/s/ref=is_s_ss_i_5_6?k=kotlin+for+android+developers&sprefix=kotlin

https://m.signalvnoise.com/using-kotlin-to-make-android-apis-fun-again-14690975afb6

BM Category Theory II 8: F-Algebra, Lambek’s Lemma , Catamorphism, Coalgebra, Anamorphism

[Continued from previous BM Category Theory …]

\boxed { \text {type Algebra f a = f a} \to \text {a} }

Intuition: [Artificial Intelligence] You teach the computer like to a Primary 6 kid, that Algebra is a type of expression (f) which, after evaluation,  returns a value.

If a = i (initial) [or u (terminal)],
\boxed { \text {(f i} \to \text {i )} \implies \text {f = Fix-point} }

Intuition: Fix-point because, the Initial “i”, after evaluating the expression f, returns itself “i”.

Lambek’s Lemma 
\boxed { \text {Initial Algebra is an Isomorphism} }

Note: Endo-functor is a functor (equivalent to function in Set Theory) within the same Category (Endo = Self = 自)

Video 8.1 F-Algebras & Lambek’s Lemma 

Video 8.2 Catamorphism & Anamorphism 

foldr ~ catamorphism (浅层变质) of a Fix-point endo-functor on a List.

Examples: Fibonacci, Sum_List

Remark: Cool Math! the more  advanced concept it is, the more closer to Nature (eg.Geology, Biology) : Catamorphism 浅层(风化)变质, or “thin-layer change in nature” (in Functional Programming languages: foldr or map) eg : add1 to a list (1 5 3 8…) 
= (2 6 4 9 …)

\boxed { \text {type Coalgebra f a = a} \to \text {f a} }

Intuition: Reverse of Algebra, given a value, Coalgebra returns an expression (f).

Anamorphism (合成变质) ~ unfoldr

Example: Prime numbers

Remark: Anamorphism (合成变质) or “synthesised change in nature“: eg. Start from a  “seed” prime number “2” generates  all other infinite prime numbers (3 5 7 9 11 13 17 …)

Note: In Haskell, no difference between Initial and Terminal Fix-points. However, since Fix-point is not unique, in Category Theory there is the Least Fix-point (Initial) and Greatest Fix-point (Terminal).

Ref: 

Reading “Understanding F-Algebra ” by BM: https://bartoszmilewski.com/2013/06/10/understanding-f-algebras/

Catamorphism (下态) : https://www.zhihu.com/question/52180621/answer/129582557

Anamorphism : https://zhuanlan.zhihu.com/cofree/21354189

F-Algebra & F-coalgebra: http://stackoverflow.com/a/16022059/5822795