In Elixir, data, once created, is immutable. Whenever some input is passed into a function to be transformed, the original value remains unchanged and a new value is created.
This allows for safe concurrent access to the same data by n processes. It makes concurrency easier to manage, as it is guaranteed that no process can change the original data. Any transformation on the original data will result in new data being created.
To get started, we need to follow these steps:
Create a file, which is
transformator.ex
, defining theTransformator
module by adding the following code:defmodule Transformator do @default_list [1,2,3,4,5,6] def get_odd_numbers(list \\ @default_list) do Enum.filter(list, fn(x)-> rem(x,2) == 1 end) end def get_even_numbers(list \\ @default_list) do Enum.filter(list, fn(x)-> rem(x,2) == 0 end) end end