>>109
書き換えれば動くのは確かめたのですが、
処理系によって挙動が異なるので、仕様ではどうなっているのか気になっています。

>>110
ありがとうございます。
たしかに、ghcに--makeオプションを指定すると、うまくコンパイルできました。

hugsでは、このライブラリは利用できないのでしょうか?
hugsの実行時に+wオプションを使い、読み込まれるファイルを確認しました。
結果、メッセージは
...
Hugs session for:
...
/usr/lib/hugs/packages/base/System/Posix/Types.hs
/usr/lib/hugs/packages/base/System/Posix/Internals.hs
/usr/lib/hugs/packages/unix/System/Posix/Files.hs
hoge.hs
Type :? for help
Main> main
*** glibc detected *** hugs: free(): invalid pointer: 0x0965eb60 ***
======= Backtrace: =========
/lib/libc.so.6[0x4a74aefd]
/lib/libc.so.6(cfree+0x90)[0x4a74e550]
/usr/lib/hugs/packages/base/Foreign/Marshal/Alloc.so[0xd67616]
hugs[0x80771c6]
...
/lib/libc.so.6(__libc_start_main+0xdc)[0x4a6faf2c]
hugs[0x8049c51]
======= Memory map: ========
...4a8アボートしました
となり、異常終了してしまいます。