> LçÉettçËäº "William James" <w_a_x_man / yahoo.com> > Aihe: Re: nil question > > Austin Ziegler wrote > > you can also do: > > > > puts "yes" if x.between?(-5, 9) > > puts "yes" if (-5..9).include?(x) > > But that's not as readable as -5 < x < 9, which is how it is written > for humans in algebra. > > In Icon, comparisons succeed or fail, they don't return true or false. > So it works this way (if x==0): > (-5 < 0 ) succeeds and produces 0 > (0 < 9 ) succeeds and produces 9 > > 1 < x < 9 > (1 < 0) fails > > -5 < x < -15 > (-5 < 0 ) succeeds and produces 0 > (0 < -15 ) fails > > So in Icon, a < x < b means exactly what it does in algebra. > > Matz and many Ruby gurus think that Ruby incorporates the best > features of preceding languages (e.g., Awk, Perl, Python, Smalltalk). > But how many of these people ever used Icon? Put this in a file and require it and you'll get the behaviour you want. Normal comparisons still work, too. # Create the new comparison methods module MultiComparable def <(val) return val if self.<=>(val) == -1 false end def >(val) return val if self.<=>(val) == 1 false end end # Modify false to allow comparisons (always fail) class FalseClass def <(val) false end def >(val) false end end # Redefine all numeric comparisons class Fixnum; remove_method :<; remove_method :>; include MultiComparable; end class Bignum; remove_method :<; remove_method :>; include MultiComparable; end class Float; remove_method :<; remove_method :>; include MultiComparable; end class Complex; remove_method :<; remove_method :>; include MultiComparable; end I actually tested it now :) E