> 2, Clarity. I _like_ being able to say > > while gets > ... > end I like to add that while I think Ruby's current compromise is very good (tradeoff between readability and meaning overloading) reaching for writability means one have to go to C direction. In C one could check if at most two of the tests have failed with: /* is*-routines return boolean (that is 0 or 1), and we want to print "ok" if at least four of the tests passes */ if( isPerfect() + isBeautiful() + isWonderful() + isNotTooBad() + isEasy() + isOhInRuby() > 6-2 ){ printf("ok"); } One can accomplish equivalent functionality with if [isPerfect, isBeautiful, isWonderful, isNotTooBad, isEasy, isOhInRuby].filter{ |x| nil if x == true; x}.compact!.length <= 2 print "ok" end But I'm sure someone else agrees it's quite a bit harder and uglier (while I'm not saying C-version isn't ugly :). (Maybe we should have Array.count{|i| i == true} ?) - Aleksi