{"id":5438,"date":"2016-05-25T15:37:35","date_gmt":"2016-05-25T18:37:35","guid":{"rendered":"http:\/\/blog.plataformatec.com.br\/?p=5438"},"modified":"2018-12-14T15:06:20","modified_gmt":"2018-12-14T17:06:20","slug":"beyond-functional-programming-with-elixir-and-erlang","status":"publish","type":"post","link":"http:\/\/blog.plataformatec.com.br\/2016\/05\/beyond-functional-programming-with-elixir-and-erlang\/","title":{"rendered":"Beyond Functional Programming with Elixir and Erlang"},"content":{"rendered":"

I would like to add a slightly different perspective to functional programming in the Erlang VM: functional programming is not a goal in the Erlang VM. It is a means to an end.<\/p>\n

When designing the Erlang language and the Erlang VM, Joe, Mike and Robert did not aim to implement a functional programming language, they wanted a runtime where they could build distributed, fault-tolerant applications. It just happened that the foundation for writing such systems share many of the functional programming principles. And it reflects in both Erlang and Elixir.<\/p>\n

Therefore, the discussion becomes much more interesting when you ask about their end-goals and how functional programming helped them achieve them. The further we explore those goals, we realize how they tie in with immutability and the control of shared state, for example:<\/p>\n