The only requirement is that the record name is a valid atom, which in this case it is though it has to be quoted. The same applies to the keynames in a record, they have to be valid atoms. So the following is a perfectly legal record:
If I not mistake, Elixir does this a lot, for example, a module Namespace.MyModule will became ‘Namespace.MyModule’ and a function myfun! wil be ‘myfun!’.
Yes, but that is because Elixir has a bit more complex syntax with special case handling of module names and atoms. So atoms can END in ! or ? without any need for quoting and names STARTING with an uppercase are module names which apart from the “normal” atom syntax also can contain .. Note that module names actually expand to an atom prefixed by Elixir. so the Foo.Bar ==> Elixir.Foo.Bar. This makes it much easier to have a “separate” Elixir module namespace as all module names must be atoms.