Hi, I have a question about Ruby if constructs. Why aren't they like smalltalk if's, where you have a boolean class and two subclasses: true and false. They both have these methods: ifTrue and ifFalse. If you use a block with a ifTrue on a True object, it will be yielded. If you use it on a false object, nothing will happen. So in ruby code: true.if_true do #code will be executed end and: false.if_true do #code will NOT be executed end and if_false is available too. so you can do this too: (var == 'a').if_true do puts 'var = "a"' end I know it would be difficult to do an if-else thing with this because the return value from the block would be the receiver: (var == 'a').if_true do puts 'var = "a"' end.if_false do #code end So is this the reason for if(var == 'a') not being syntactic sugar for (var == 'a').if_true? Thanks for answering! Jules -- Posted via http://www.ruby-forum.com/.