Jon Cast <[EMAIL PROTECTED]> writes: > > It would not be entirely fair to lay all the blame for large Haskell > > binaries entirely at the door of static vs. dynamic linking. > > Well, considering that compiling the C binary statically linked > produces an even bigger executable: > > $ gcc -static hello.c -o hello_c > $ ls -l hello_c hello_hs > -rwxrwxr-x 1 jcast jcast 441624 Jul 23 20:56 hello_c > -rwxrwxr-x 1 jcast jcast 157028 Jul 18 14:08 hello_hs
You aren't comparing like with like here. Your hello_c is statically linked with libc, but hello_hs is dynamically linked with libc. Here's what they look like on my machine: 13220 hello_c dynamically-linked 481503 hello_hs dynamically-linked 1444114 hello_c statically-linked (gcc -static ...) 1958990 hello_hs statically-linked (ghc -optl-static ...) > > In fact, most of the extra stuff in "Hello World" is there purely to > > handle all possible error conditions in the I/O monad. > > You mean as opposed to C, where most of the extra stuff is there > purely to support number formatting? Ok, point taken. There is a lot of code re-use in both languages. But because Haskell is higher-level, it tends to re-use the lower-level C library in addition to its own libraries. That is all. Regards, Malcolm _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe