Well, turns out that one of the oldest programming languages in existence, Fortran lets you do OOP, it also has pure functions and subroutines. I'm talking about about Fortran 95/2003/2008:
http://h21007.www2.hp.com/portal/download/files/unprot/fortr...
Unfortunately, I don't think it's something that can be bolted on after the fact.
Maybe some Javascript "transpiler" could do it... it would be really interesting.
The advantage of going with some sort of transpiler is that you can have two kinds of code within the same process whilst you make a gradual transition. I feel like, it could be made to work, but the boundary would have to be quite heavy-weight. Think less gradual typing and more FFI.
Edit: actually, in depends on which side is doing the calling. Going from checked to unchecked code is a minefield, but if it's unchecked code calling into checked code, it could work quite well as long as the arguments are immutable and don't have methods that can do IO.
http://stackoverflow.com/questions/3141087/what-is-meant-wit...