Ok, well, I guess I'm still learning my way around the documentation. It
has nothing to do with Module.concat() but rather how defmodule deals with
dynamic names. I found the below in the Kernel#defmodule docs. Sorry for
the noise, and thank you for the great new language!
--Ian
## Nesting
Nesting a module inside another module affects the name of the nested
module:
defmodule Foo do
defmodule Bar do
end
end
In the example above, two modules - `Foo` and `Foo.Bar` - are created.
When nesting, Elixir automatically creates an alias to the inner module,
allowing the second module `Foo.Bar` to be accessed as `Bar` in the same
lexical scope where it's defined (the `Foo` module).
...
## Dynamic names
Elixir module names can be dynamically generated. This is very
useful when working with macros. For instance, one could write:
defmodule String.to_atom("Foo#{1}") do
# contents ...
end
Elixir will accept any module name as long as the expression passed as the
first argument to `defmodule/2` evaluates to an atom.
Note that, when a dynamic name is used, Elixir won't nest the name under
the
current module nor automatically set up an alias.
--
You received this message because you are subscribed to the Google Groups
"elixir-lang-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-talk/87ad00a8-aa27-4d04-9188-c373fcecedd0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.