Not to bore you with long forewords, I’ll just state that traveling to the future is trivial. Just freeze yourself or preserve your state some other way, wake up the same at a later point in time et voilà, timetravel. It’s so easy I actually did it with the leftovers from last nights dinner. And if you managed to duplicate yourself earlier somehow, you could even greet your older self. No paradox involved. Every monad can do that.
But traveling back in time (as I showed above, the only “proper” form of timetravel) is a completely different game.
Going back and killing your own grand granddad. Selling Shakespeare his own books . . . rest assured that this shit would not compile in Haskell!
In Java (or any other multithreaded language) you’d probably get this to work. And the meanest thing is that if you don’t believe in time travel (aka don’t write thread save code) there might be “timetravelin’ goin’ on” right under your nose without you even noticing it. At least until the universe (aka your programm) crashes and vanishes into nothing.
What I’m trying to say is this: I don’t care what scientists say! As long as we don’t know what language the universe is written in, I refuse to aknowledge the fact that timetravel is impossible.