With the development branch of GHC (anyone know exactly which version this was added in?):
$ ghc -o hello hello.hs
$ strip -p --strip-unneeded --remove-section=.comment -o hello-small hello
$ du hello hello-small
700 hello
476 hello-small
Add the -dynamic flag for a dynamically linked RTS:
$ ghc -dynamic -o hello hello.hs
$ strip -p --strip-unneeded --remove-section=.comment -o hello-small hello
$ du hello hello-small
24 hello
16 hello-small
See also: http://hackage.haskell.org/trac/ghc/wiki/SharedLibraries/PlatformSupport
For comparison with C:
$ gcc hello.c -o hello
$ strip -p --strip-unneeded --remove-section=.comment -o hello-small hello
$ du hello hello-small
12 hello
8 hello-small
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…