Which IMHO led to a form of “not invented here syndrome”, with lots of different macros for various use cases, many of which only cover the author’s specific need and not the more general case.
I just stumbled upon this blog post, which is a really nice summation of semantic abstractions, patterns and language evolution.
It’s short and well worth a read.
I think Elixir’s macro have huge potential to evolve the language quicker - of course there are pitfalls if used incorrectly - but the upside is far larger, if used prudentially.
What is the conclusion about, if OTP is bad or not?
OTP is a tool It tends to be good for avoiding to reinvent the wheel, mistake by painstaking mistake, when building concurrent services in real-world scenarios where you need reliability and fault tolerance, and can be selectively applied in situations that resemble such a scenario.