Book Image

Functional Kotlin

Book Image

Functional Kotlin

Overview of this book

Functional programming makes your application faster, improves performance, and increases your productivity. Kotlin supports many of the popular and advanced functional features of functional languages. This book will cover the A-Z of functional programming in Kotlin. This book bridges the language gap for Kotlin developers by showing you how to create and consume functional constructs in Kotlin. We also bridge the domain gap by showing how functional constructs can be applied in business scenarios. We’ll take you through lambdas, pattern matching, immutability, and help you develop a deep understanding of the concepts and practices of functional programming. If you want learn to address problems using Recursion, Koltin has support for it as well. You’ll also learn how to use the funKtionale library to perform currying and lazy programming and more. Finally, you’ll learn functional design patterns and techniques that will make you a better programmer.By the end of the book, you will be more confident in your functional programming skills and will be able to apply them while programming in Kotlin.
Table of Contents (22 chapters)
Title Page
Copyright and Credits
Dedication
Packt Upsell
Contributors
Preface
Index

Arrow's type hierarchy


There is a limitation in Kotlin's types system—it doesn't support Higher-Kinded Types (HKT). Without getting too much into type theory, an HKT is a type that declares other generic values as type parameters:

class MyClass<T>() //Valid Kotlin code

class MyHigherKindedClass<K<T>>() //Not valid kotlin code

Lacking HKT is not great for Kotlin concerning functional programming, as many advanced functional constructs and patterns use them.

Note

The Arrow team is working on Kotlin Evolution and Enhancement Process (KEEP)—the community process for adding new language features, called Type Classes as extensions in Kotlin (https://github.com/Kotlin/KEEP/pull/87) to support HKT and other features. At this very moment, it isn't clear if this KEEP (coded as KEEP-87) will be included anytime soon in Kotlin, but right now is the most commented proposal and has attracted a lot of attention. Details aren't clear now as it is still a work in progress, but there is a glimpse...