Notice the 'List' and 'Unit' types, and the 'thenIO' and 'unpackString#' functions. There's no syntactic sugar in LHC yet. You can get everything sugar-free these days, even Haskell compilers.
Running the code through the LLVM dynamic compiler gives us the expected output:
# lli Hello.ll Hello World!