hello

I was experimenting the behaviour of ruby when I came across the
following:

ruby 1 > puts 1 == 1
true
ruby 2 > puts 1 == 2
false

this sounds OK, but why do I get "1" and "nil" in the following:

ruby 3 > a = 10**10000 / 1.5
ruby 4 > puts a
Infinity  ## still OK
ruby 5 > puts a.infinite?
1  ## oups! why not "true"?
ruby 6 > a = 10.0
ruby 7 > puts a.infinite?
nil  ## oups! why not "false"?

(the "finite?" predicate returns true and false)

even if it does not affect the trouth or falseness of the results,
is it an unconsistancy of this predicate (a bug) or is there a 
good reason for this?

a more general question is: if every thing except nil (and false) is
true, 
what is the need for "true" and "false": nil and any thing else is
sufficient.
conversely if true and false are to exist (which I agree with at least
for
esthetic reasons) why are't they both the only members of a "Boolean"
class 
and why isn't nil true (only false would represent false)?

the strange thing is that false is different from nil (2 different kinds
of 
falsenesses?) which leads to funny things as:

ruby 1 > a = 10.0
ruby 2 > puts a
10.0
ruby 3 > if a.infinite? == false
ruby| puts "a is finite"
ruby| else
ruby| puts "a is infinite"
ruby| end
a is infinite
ruby 4 > 

any enlightement is welcome

maurice

ps: 
maurice@garfield> ruby -v
ruby 1.6.1 (2000-09-27) [i586-linux]