[#15359] Timeout::Error — Jeremy Thurgood <jerith@...>

Good day,

41 messages 2008/02/05
[#15366] Re: Timeout::Error — Eric Hodel <drbrain@...7.net> 2008/02/06

On Feb 5, 2008, at 06:20 AM, Jeremy Thurgood wrote:

[#15370] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/06

Eric Hodel wrote:

[#15373] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/06

Hi,

[#15374] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/06

Nobuyoshi Nakada wrote:

[#15412] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/07

Hi,

[#15413] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/07

Nobuyoshi Nakada wrote:

[#15414] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/07

Hi,

[#15360] reopen: can't change access mode from "w+" to "w"? — Sam Ruby <rubys@...>

I ran 'rake test' on test/spec [1], using

16 messages 2008/02/05
[#15369] Re: reopen: can't change access mode from "w+" to "w"? — Nobuyoshi Nakada <nobu@...> 2008/02/06

Hi,

[#15389] STDIN encoding differs from default source file encoding — Dave Thomas <dave@...>

This seems strange:

21 messages 2008/02/06
[#15392] Re: STDIN encoding differs from default source file encoding — Yukihiro Matsumoto <matz@...> 2008/02/06

Hi,

[#15481] very bad character performance on ruby1.9 — "Eric Mahurin" <eric.mahurin@...>

I'd like to bring up the issue of how characters are represented in

16 messages 2008/02/10

[#15528] Test::Unit maintainer — Kouhei Sutou <kou@...>

Hi Nathaniel, Ryan,

22 messages 2008/02/13

[#15551] Proc#curry — ts <decoux@...>

21 messages 2008/02/14
[#15557] Re: [1.9] Proc#curry — David Flanagan <david@...> 2008/02/15

ts wrote:

[#15558] Re: [1.9] Proc#curry — Yukihiro Matsumoto <matz@...> 2008/02/15

Hi,

[#15560] Re: Proc#curry — Trans <transfire@...> 2008/02/15

[#15585] Ruby M17N meeting summary — Martin Duerst <duerst@...>

This is a rough translation of the Japanese meeting summary

19 messages 2008/02/18

[#15596] possible bug in regexp lexing — Ryan Davis <ryand-ruby@...>

current:

17 messages 2008/02/19

[#15678] Re: [ANN] MacRuby — "Rick DeNatale" <rick.denatale@...>

On 2/27/08, Laurent Sansonetti <laurent.sansonetti@gmail.com> wrote:

18 messages 2008/02/28
[#15679] Re: [ANN] MacRuby — "Laurent Sansonetti" <laurent.sansonetti@...> 2008/02/28

On Thu, Feb 28, 2008 at 6:33 AM, Rick DeNatale <rick.denatale@gmail.com> wrote:

[#15680] Re: [ANN] MacRuby — Yukihiro Matsumoto <matz@...> 2008/02/28

Hi,

[#15683] Re: [ANN] MacRuby — "Laurent Sansonetti" <laurent.sansonetti@...> 2008/02/28

On Thu, Feb 28, 2008 at 1:51 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

Your own if/else

From: Marcin Raczkowski <mailing.mr@...>
Date: 2008-02-08 23:03:52 UTC
List: ruby-core #15440
Hello i remeber someone asking fif it's possible in Ruby - and i have no 
idea if it was replyied, anyway i wanted to share my idea how to make 
your own if/else/elsif :)

class Object
   def else
     self
   end

   def elsif(condition,&block)
     self
   end

   def if(condition,&block)
     (!condition && Else) || (condition && block.call)
   end
end

class Else
   def self.else(&block)
     block.call
   end

   def self.elsif(condition, &block)
     self.if(condition, &block)
   end
end



and now we can do:

irb(main):024:0> self.if(true){:true}.else{:false}
=> :true
irb(main):025:0> self.if(false){:true}.else{:false}
=> :false
irb(main):051:0> self.if(false){:true}.elsif(true){:true}.else{nil}
=> :true
irb(main):052:0> self.if(false){:true}.elsif(false){:true}.else{nil}
=> nil
irb(main):053:0> self.if(true){:ok}.elsif(true){:not_ok}.else{:not_ok}
=> :ok
irb(main):056:0> self.if(false){:not_ok}.elsif(true){:ok}.else{:not_ok}
=> :ok


this aproach is elegant becouse even if object have method else or elif 
or even if declared then it'll bahave as expected !!!
Also i didn't use any of old if/else statements, i didn't even use tri 
argument operator (cond ? true : false), it's all implemented using 
boolean logic!!

Ok, now probably comes question - what we can do with it - of course - 
create less boolean logic!!!

module Fuzzy
   def self.if(float, &block)
     condition = rand <= float
     (!condition && Else) || (condition && block.call)
   end
end

now we provide if function with float between 0 and 1 - which represents 
probability of achieveing goal

Fuzzy.if(0.99){puts "pretty standard stuff"}.else{puts "fuck man, you 
really have luck"}

with some luck (3th try for me) you can get something like this:
irb(main):097:0> 10.times{ Fuzzy.if(0.99){puts "pretty standard 
stuff"}.else{puts "fuck man, you really have luck"} }
pretty standard stuff
pretty standard stuff
pretty standard stuff
pretty standard stuff
fuck man, you really have luck
pretty standard stuff
pretty standard stuff
pretty standard stuff
pretty standard stuff
pretty standard stuff
=> 10

What else - of course this way you can do random mutations in genetic 
algorithms, of course there's other ways to achieve that - but this one 
is fun :D

currently there's only one problem with this:

irb(main):099:0>  self.if(false){:not_ok}
=> Else
while normally you get nil, also Else evaluates to >true< in 
expressions, i thought about using Nil or False class instead of else - 
but then block returning nil or false would trigger else block too.
so there's tradeoff. Also Else class could cause name conficts so 
someone can rename it to 
WierdClassThatServesOnlyAsMetaProgramingMagickElse to avoid it :)


------------

And last thing - i tried hacking ruby interpreter to treat >if< not as 
keyword - but as Kernel method - but not much luck yet,


have phun with Ruby :)

In This Thread

Prev Next