関谷@電通大です。
比較演算子をPythonのように連結できるようにする
seqcmp.rb
を作りました。(signatureの下にあります)

デフォルトでは使用頻度が高いと思われるNumeric系統とStringクラスについて
の実装ですが、他の<=>を定義しているクラスでも正常に動作すると思います。

(例)
 「a < b <= c」は、「a < b && b <= c」のとき真となる。

(如何にして実装したか?)
 1)FalseClassに比較演算子(==を除く、以下同様)を定義。これらは常に
   falseを返すものとする。
 2)Numeric,Stringでの比較演算子を再定義。比較が正しければ右辺を、
   正しくなければfalseを返す。

比較演算子が論理値しか返さないのがもったいないということで今日一日で考
えたんですが、かなり強引で汚い実装ですね。
その上Ruby本体のソースをいじることまで考えてたりします。^^;

ヤバい点とか、もっと簡単にできる方法とか、あとファイル名適当なのでもっ
といい名前とかあったらどうぞ突っ込んでください。

では。
P.S.
Pythonのインデントを使う文法はSKKのごとき簡素さ(個人的主観)で画期的ですね。
他はどうでもいいですが。(爆)
---
電気通信大学 情報工学科 4年                  |% 予習
関谷 信貴(せきたに のぶたか)                  |file system full.
e-mail   sekita-n / hera.im.uec.ac.jp           |% 授業
Webpage  http://pluto.im.uec.ac.jp/~sekita-n/ |file system full.;_;
↑シュミ特、Fanroad N-BBSなど                 |system downed...

---Cut Here
=begin
 seqcmp.rb
 比較演算子を連続的に利用するためのライブラリ v0.00
 by sekita-n / hera.im.uec.ac.jp

(例)
require("seqcmp")
a = 1
b = 2.5
c = 3

p a < b <= c

=end

module SeqComparable
  Eval_Methods = <<"EOF"
    def < (o); ((self <=> o).lt(0)) ? o : false; end
    def <=(o); ((self <=> o).le(0)) ? o : false; end
    def > (o); ((self <=> o).gt(0)) ? o : false; end
    def >=(o); ((self <=> o).ge(0)) ? o : false; end
EOF
end

class Integer
  alias lt <;  alias le <=;
  alias gt >;  alias ge >=;
end

class FalseClass
  def < (o); false; end
  def <=(o); false; end
  def > (o); false; end
  def >=(o); false; end
end

class Fixnum
  module_eval(SeqComparable::Eval_Methods)
end

class Bignum
  module_eval(SeqComparable::Eval_Methods)
end

class Float
  module_eval(SeqComparable::Eval_Methods)
end

class String
  module_eval(SeqComparable::Eval_Methods)
end

---Cut Here