I've tried to explain it like this. To me ruby feels Turtles all the way down with respect to Objects, but some kind of nightmare tunnel of interleaved beasts down with Functions.
I don't think I should have to make that compromise, so I'll happily go about writing my ruby when I have to, but I'm waiting for the language that is consistent all the way down.
If I could replace every yield I've ever written in ruby with a .call() I would be so much happier :)
Lua is close.
Newspeak is coming... http://gbracha.blogspot.com/
http://blog.sidu.in/2007/11/ruby-blocks-gotchas.html
is a good run down of some of the problems here
How many people will use yield _AND_ self.send in the same method please?! That seems like an awfully complicated and contrived example. Who the heck does this?
The inconsistency is annoying, but 99.999% of the time, Ruby is actually giving you what you want.
Which brings us to another point - when exactly do you actually need them? I have for every 1000 lines of ruby code maybe one line of "yield" code, and this is only to further extend classes for flexibility. Other languages dont allow you to choose what you want to have, ruby does.
You simply have to make decisions when to use what.
For me it is simplicity, elegance and beauty. These are my biggest design criterias.