In Elixir, module names such as IO or String are just atoms under the hood and are converted to the form :"Elixir.ModuleName" at compile time.
IO
String
:"Elixir.ModuleName"
iex(1)> is_atom(IO) true iex(2)> IO == :"Elixir.IO" true