Elixir vs. Mutable Objects
Explore the core difference between Elixir's functional programming approach and traditional object-oriented mutable objects. Understand how Elixir's immutable data, explicit state management via processes, and message passing make software more stable and easier to reason about, especially in concurrent environments.
Since Elixir is a functional programming language, it doesn’t have objects. The language also has a strong focus on immutability. In Elixir, we transform data rather than mutate it. Said another way, OO (object-oriented) changes. FP (functional programming) copies. Basically, OO mutates while FP doesn’t.
Even though this difference may be subtle and might even seem inefficient, it’s transformational. Many of Elixir’s most important benefits flow directly from this design decision. In this section, we look at what those benefits might be, and why they matter.
Understanding mutation
Mutable objects bundle three concerns that are distinct in Elixir:
- State
- Behavior
- Time
Take this example:
dictionary.store("key", "value")
If this were like most object-oriented programs, the dictionary would be an object holding a dictionary with multiple keys and values, probably in the form of a hash. That object would ...