Again from If programming languages were cars…:
Haskell is an incredibly elegantly-designed and beautiful car, which is rumored to be able to drive over extremely strange terrain. The one time you tried to drive it, it didn’t actually drive along the road; instead, it made copies of itself and the road, with each successive copy of the road having the car a little further along. It’s supposed to be possible to drive it in a more conventional way, but you don’t know enough math to figure out how.
Haskell is not really a car; it’s an abstract machine in which you give a detailed description of what the process of driving would be like if you were to do it. You have to put the abstract machine inside another (concrete) machine in order to actually do any driving. You’re not supposed to ask how the concrete machine works. There is also a way to take multiple abstract machines and make a single abstract machine, which you can then give to the concrete machine to make multiple trips one after another.
So here is my hello.hs:
main = putStrLn "Hello World!"