I am working on some project , I have managed to add Elixir f project files to running erlang project but , I have noticed something interesting ;
Compiled: No compile time info available
Object file: /var/studentwelfare1/elixir-middleware/welfare/_build/dev/lib/welfare/ebin/Elixir.Welfare.beam
Compiler options: [no_spawn_compiler_process,from_core,no_auto_import]
I see Elixir append on each module after compilation ,
I would like to Understand why its important to add Elixir ??
Elixir’s atoms have two forms, either
Blah. When they are in uppercase form like
Blah then that becomes essentially
Blah == “Elixir.Blah”`. Elixir does this to namespace atoms.
defmodule ... are done with the uppercase form, so
defmodule Blah ... is the same as
defmodule :"Elixir.Blah" ..., hence that is where it comes from.
It’s a popular pattern among other languages that compile to the beam to have a namespacing like that.
I.E. it’s just elixir’s style of namespacing (although an elixir module made like
defmodule :blah ... will still be the
blah atom in erlang too), a ‘convention’ but not required.
If you are asking who is it that, then the answer is simple - to avoid name collisions on case-independent FS which are used on macOS and Windows.