When talking about mainstream programming languages, we often put them into two major buckets: object oriented programming and functional programming. There are other programming paradigms but we act like OOP and FP are oil and water. In this article I'll be blurring the lines of these two paradigms.
There's been a bit of discussion in the Erlang and Elixir world around this topic. It's recently been stated that Elixir is "the most object oriented language." Avdi Grimm has implemented exercises from Brian Marick's Functional Programming for the Object-Oriented Programmer, originally written in Clojure. There's even a hilarious library and lightning talk from Wojtek Mach for out-of-the-box object orientation in Elixir.