Kotlin Explained Series - Functional Programming

Details
Dear all,
Kotlin its a strong type programming language which embraces both Functional and Object Oriented paradigms.
This brings the power of the two "worlds" -> functional programming in the small and object oriented programming in the large.
In this first part of the series we are going to see how Kotlin (and arrow) embraces the functional programming paradigm to lead to more maintainable, easy to reason, succinct yet expressive and concurrent friendly applications.
I am going to present you through examples and explanations the following topics that make the (partial) check list of a functional programming application:
- First class and higher order function
- Pure functions
- The advantages of immutability. E.g: Referential transparency, and the drawbacks
- Recursion and correcursion
- Functional collections
- Combining FP and OP
- Functional Reactive Programming
- Functors, Monads, Applicatives
- Arrow library
- Functions composition - andThen, pipe
- Partial application
- Currying
- Memoization
- Partial functions
- Identity and constants
- Lenses
- Monad transformers
- Option, Either, Try, State
There are more than these in FP, some of them quite advanced, but IMPO striving to check most of the above (when it really matters) will make us better programmers.
Disclosure:
- The other proposals you saw in the poll, and some of you expressed the intention to learn about will be part of the next presentations in the series. My intention is to have a kotlin event every 3 or 4 months, so, there are plenty of cool things ahead of the Kotlin User Group Bucharest Romania members.
Kind regards.

Kotlin Explained Series - Functional Programming