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.