I would almost prefer something simple like ncurses.
ncurses is rarely as simple as it looks. The API has rather ridiculous edge cases, because curses was originally ripped out of the vi source code and wasn't intended for general use; the Haskell bindings to it are either low level and little different from C programming, or higher level but annoyingly incomplete.