On Jul 20, 9:36 am, Stefan Rusterholz <apei... / gmx.net> wrote: > Trans wrote: > > Sure. I realize. I'm only pointing out that this -> operator is > > equivalent to a rescue NoMethodError, > > So how can I explain to you that it *isn't*? Just tell me, how isn't it? The end result seems exactly the same me. How does: foo = (bar.baz default bar).quuz default quux differ in result from: foo = (bar->baz || bar)->quuz || quux > > Another possibility... perhaps we can add a feature to #tap (which has > > already been added to Ruby 1.9) so that: > > Somebody else here on the list uses a method 'ergo' to do what -> would > do. Similar disadvantages as the ._methods solution. Ah, right. I like #ergo, but it's not quite that same as this -> as it only applied to nil. Wouldn't -> be more like: def arrow @_op ||= Functor.new{ |op, *args| begin self.send(op, *args) rescue NoMethodError nil end } end T.