Haskell and low-level IO actions
ghc, haskell, linux
Solution
Sockets, pipes and files are implemented in the kernel; to use them from a user-space program, you need to call into the kernel. If you regard the kernel as a library, then yes, I/O is necessarily implemented by a low-level C/assembler library.
In practice, Haskell implementations such as GHC will use the C library's wrappers around system calls. See e.g. the GHC RTS commentary, which describes the bits of C that make up the core of any Haskell program compiled with GHC. When in doubt, consult the source code.
Problem
How is low level stuff like sockets, pipes and file IO implemented in Haskell? I guess these IO methods are not native in Haskell but Haskell quickly wraps some low level C library, is it right?