As further support of this argument: the Ruby community is rich with metaprogramming, sometimes going to extreme lengths, frequently for API-improvement purposes.
With a little knowledge about how it all works, it's not too obtuse, and the developer benefits can be pretty significant - ever found an API annoying, or resisted doing something "right" because it's more work or less performant than a simple option? With rich enough metaprogramming, the best option can be the simplest and most-obvious in nearly all cases.
Maybe Ruby has irreparably tainted me, but as time goes on I fall further towards "more power is more better". 99.9% of the time you won't touch it, but it's a lifesaver when it's available and you need it, and that comes up much more often in libraries. The community as a whole reaps the benefit even if less than 1% know how to use it.
With a little knowledge about how it all works, it's not too obtuse, and the developer benefits can be pretty significant - ever found an API annoying, or resisted doing something "right" because it's more work or less performant than a simple option? With rich enough metaprogramming, the best option can be the simplest and most-obvious in nearly all cases.
Maybe Ruby has irreparably tainted me, but as time goes on I fall further towards "more power is more better". 99.9% of the time you won't touch it, but it's a lifesaver when it's available and you need it, and that comes up much more often in libraries. The community as a whole reaps the benefit even if less than 1% know how to use it.