>>791
Clsが未定義のとき、評価される式に定数Clsを含められない、という縛りが
あるので、ancestorsの中を調べるときにやっぱり困るという問題が……。

>>792
をを、そういうモノが。Benchmarkで軽く評価してみますた。すると、何とも
微妙な結果が。まぁ、1処理に1回くらいしか動かない部分で100万分の1秒以下
の差なんてゴミみたいなもんなのですが。

require 'benchmark'
n = 1000000
Benchmark.bm do |x|
  x.report("null             ") { n.times do; end }
  x.report("const_defined?(1)") { n.times do; Object.const_defined?(:Cls); end }
  x.report("defined?(1)      ") { n.times do; defined? Cls; end }
end
class Cls; end
Benchmark.bm do |x|
  x.report("const_defined?(2)") { n.times do; Object.const_defined?(:Cls); end }
  x.report("defined?(2)      ") { n.times do; defined? Cls; end }
end

      user     system      total        real
null               0.078000   0.000000   0.078000 (  0.078000)
const_defined?(1)  0.282000   0.000000   0.282000 (  0.281000)
defined?(1)        0.171000   0.000000   0.171000 (  0.172000)
      user     system      total        real
const_defined?(2)  0.250000   0.000000   0.250000 (  0.250000)
defined?(2)        0.625000   0.000000   0.625000 (  0.625000)