Haskell's FFI is used to call functions from other languages (basically C at this point), and for C to call Haskell functions. Compiling FFI-using modules Complete example with GHC GHC's libs don't (apparently?) support generic termios stuff. I could implement the whole tcgetattr / tcsetattr thing, but let's just turn ICANON on and off, so IO.getChar doesn't wait for a newline: termops.c: #include