I used to be of the opinion that Ruby takes OOP to the limit, by allowing reopenable classes.
Take the factorial function. It operates on numbers, so conceivably, there should be a "factorial" message on receivers of type Number (to borrow from Smalltalk). Here's how it can be done ...