Erlang had parse transforms which can provide similarly powerful features, just usage of them is much harder and less obvious. Also implementation of these is much more complex than Elixir macros.
In this case it is not about syntax, but about semantics. Public functions in Elixir cannot be inlined and can slow down your code. Additionally exposing functions, that are meant for internal usage, in public API can sometimes cause maintainability problems, when people will keep assuming existence of such functions. Of course you can say that people shouldn’t use that functions, but making something impossible is better than making it discouraged.






















