A lot of Kotlin features can be traced back to functional programming languages, eg
- Heavy use of immutability-by-default and map, filter etc functions
- Type inference
- Data classes (which enable pattern matching)
- Null safety and dealing with the absence of values
However, Kotlin is missing many incredibly useful data types that are ubiquitous in functional programming languages, eg Either, Try etc.