On 9/26/07, Ari Brown <ari / aribrown.com> wrote:
>
> On Sep 26, 2007, at 7:24 PM, Logan Capaldo wrote:
>
> > this is evil
>
> Because it uses eval?
>
Because it uses eval and assumes that returning from an activation
frame below the one we are in will do the right thing. I don't know
for instance, how this behaves in the presence of things like ensure
blocks, etc.
> >
> > % cat rule.rb
> > def rule(&b)
> >   r = b.call
> >   eval("return false", b) unless r
> > end
> >
> > def a
> >   rule { false }
> >   0
> > end
> >
> > def b
> >   rule { true }
> >   1
> > end
> >
> > p a
> > p b
> >
> > % ruby rule.rb
> > false
> > 1
>
> Damn you, evil geniuses! Damn you!
>
> I can't believe I didn't think of this. This is why you win and I don't.
>
> Thanks ridonculously,
> Ari
> -------------------------------------------|
> Nietzsche is my copilot
>
>
>
>