Glad to hear. This is just a reflexion of how awesome this book has been at teaching the fundamentals.
Great job Sasa.
I am new to Elixir, so any clarifications would be greatly appreciated.

For section 3.4.2, in the "Practicing" section, the range/2 example, wouldn't it be better to do a recursive tail from the 'to' to the 'from' value, as opposed to what was posted on https://github.com/sasa1977/elixir-in-action/blob/master/code_samples/ch03/recursion_practice_tc.ex that relies at the end on 'Enum.reverse'? Here is what a potential solution would look like:

def range(from, to) do
  generate_from_range(from, to, [])
end

defp generate_from_range(from, to, list) where from > to do
  list
end

defp generate_from_range(n, n, list) do
  [n | list]
end

defp generate_from_range(from, to, list) do
  generate_from_range(from, to - 1, [to | list])
end