Ruby-dev summary 28206-28273

From: Martin DeMello [mailto:martindemello@yahoo.com]
Sent: Thursday, February 02, 2006 7:43 AM
To: ruby-talk ML
Subject: Re: ruby-dev summary 28206-28273

>
> [ruby-dev:28217] ANDCALL operator
>
> Nobuyoshi Nakada suggested a new operator `&?' (this
notation is temporary)
> which evaluates left-hand-side expression, and if it is
true then call
> right-hand-side method. For example:
>
> if a[1] and a[1].strip.empty?
> >>
> if a[1] &? strip.empty?
>
> h["key"] and h["key"].dispatch
> >>
> h["key"] &? dispatch
>
> The motivation of this operator is to avoid duplication of
> expression.
>
> Takaaki Tateishi proposed another idea, Object#nil? with block
> (again, this name is temporary).
>
> a[1].nil? {|str| str.strip.empty? }
> h["key"].nil? {|h| h.dispatch }
>
> This issue is still open.

Yuck. Looks like a hack from Perl6. Not Ruby-ish.

Syntactically, a method might look better than an operator:

a[1].if?.strip.empty?
a[1].maybe.strip.empty?
a[1].and.strip.empty?

martin

Looks better syntactically, but still has problems as Austin pointed
out.

I'd sooner accept "iff" (if and only if):

iff h["key"].dispatch -> same as: h["key"].dispatch if h["key"]

But, the idea of adding new keywords doesn't thrill me and I worry that
it's too terse.

Regards,

Dan

···

-----Original Message-----
Minero Aoki <aamine@loveruby.net> wrote:

> a[1].if?.strip.empty?
> a[1].maybe.strip.empty?
> a[1].and.strip.empty?
>
> martin

Looks better syntactically, but still has problems as Austin pointed
out.

Didn't see that post :frowning: Hopefully it'll show up on the ng side sometime
soon. The only problem I can see with it is that you get the method call
overhead even if it does nothing.

I'd sooner accept "iff" (if and only if):

iff h["key"].dispatch -> same as: h["key"].dispatch if h["key"]

But, the idea of adding new keywords doesn't thrill me and I worry that
it's too terse.

My strong objection to this is that it breaks the ". binds more tightly
than anything else" rule.

martin

···

Berger, Daniel <Daniel.Berger@qwest.com> wrote:

Looks more like Smalltalk, but should be not_nil?.

···

On Feb 2, 2006, at 7:39 AM, Berger, Daniel wrote:

Minero Aoki <aamine@loveruby.net> wrote:

  Takaaki Tateishi proposed another idea, Object#nil? with block
  (again, this name is temporary).

    a[1].nil? {|str| str.strip.empty? }
    h["key"].nil? {|h| h.dispatch }

  This issue is still open.

Yuck. Looks like a hack from Perl6. Not Ruby-ish.

--
Eric Hodel - drbrain@segment7.net - http://segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com