If I may jump in here: On Thu, 7 Jul 2005, Yukihiro Matsumoto wrote: > Hi, > > In message "Re: Object#=~" > on Wed, 6 Jul 2005 20:10:08 +0900, "daz" <dooby / d10.karoo.co.uk> writes: [...] > |true - positive pattern match result > |nil - negative pattern match result > |false - don't know (no match was done) > > Hmm, sorry for behaving unexpectedly. But I like your idea. > Ryan, what do you think? > > matz. > I'd expect nil and false to be swapped in the above scheme. In logic false is the opposite of true. Nil is untrue, but it is not false. Suppose, [for a moment of madness :-)], that you woke up one day to find you'd given us Fuzzy truth values as a native Ruby class. :-) Nil would still be different from a truth value of 0.5, and would mean that nothing could be said about the truth value. So I think things which are proper truth values should be used for positive and negative results, and nil for the third case. This also fits any mental TTL[1] metaphor people might have: true == high, false == low, and nil == tristate. But I wonder how much code would break if this path were taken... Hugh [1] Transistor-Transistor Logic