Then what would you call the method_missing method?
> a b c
> = Name Error
> def method_missing(*args); args.join(" "); end
> a b c
> = "a b c"
That looks exactly like a macro to me.
---
> But macros?
Not macros as such, we all like having them. But Ruby likes using them constantly, and that culture is hardly restricted to Rails.
> Macro is a great power, but at the same time, it makes the languagesyntax different for each application. You will have hard time to read the program without knowledge of the application/framework macros.
> So I am not going to add macro to Ruby.
> matz.
https://www.ruby-forum.com/topic/215212
The funny thing is that this is what happens when we use method_missing or other Ruby features to create DLSes: unless you know the application/framework DLS you can't understand the program. They must be used wisely.
But to be fair: how can one understand a program without the knowledge of the non standard libraries it uses? This applies to every program and language, macros or not.
But macros? A language with macros I'm working with is Elixir. Even the seldom used if then else is a macro there. Do people dislike Elixir because macros change the code at compile time? I don't think so.