@vaskir In the core we try to stay away from purely functional constructs (when something just represent the recipe for computation, instead of doing the computation itself). The core is imperative by design (you run the code, it immediately does what you say it to do) like in Go. This makes it much easier to understand for beginners and for experienced developers alike.
However, you can have all your functional paradigms on top of that with ease. See how it integrates with
functional reactive libraries, for example:
https://github.com/Kotlin/kotlinx.coroutines/blob/master/reactive/coroutines-guide-reactive.md