This sort of debate annoys me - not so much because of the potentially fragile design on one side or the perhaps pedantic adherence to OOP principles on the other, but because I know that I could have things like pattern matching and a scarily expressive type system and, well, that'd make a lot of these problems disappear.
Curse you, Haskell, for making me so bitter!