Higher Kinded Types in a Lower Kinded Language: Functional Programming in Kotlin
It's hard coming back down to the earth of a JVM based language after spending time with Haskell and OCaml. The type systems are enviable, and the abstractions available are incredibly powerful.
Yallop and White's paper on Lightweight Higher-Kinded Polymorphism has been an inspiration for many libraries seeking to add functional abstractions to languages that don't support them. For Kotlin, one library is [Arrow](arrow-kt.io), which provides incredibly powerful abstractions over native language capabilities like co-routines, reactive-streams and nullable types.
This talk will discuss functional programming in Kotlin with the Arrow library, how the abstractions it provides can improve your code, and how this magic that provides higher-kinded types works under the hood.
Outline/Structure of the Talk
Outline Kotlin very quickly, jump into the Arrow lib and what value it provides. End on a very deep dive of the approach they use from the paper to provide "higher kinded types" in the language.
Learning Outcome
How to effectively use the abstractions provided by Arrow, as well as how they provide these niceties.
Target Audience
Java/Kotlin devs working on JVM or Android
Prerequisites for Attendees
Some Java/Kotlin but not a hard requirement. Going to deep dive into some functional techniques, and some interesting walkthrough of the Yallop and White paper on how the effect is achieved.
Links
http://arrow-kt.io/ - The homepage of the library I'll be speaking about