You can use the :terminal
command (thanks, @PeterRincker!) to create a terminal emulator split. Add the command you want to run; e.g. :terminal ghci
.
My previous advice, which was predicated on the non-existence of :terminal
(and should therefore probably be ignored), is included below for completeness rather than helpfulness.
If you actually mean vim (and not gvim), you can use tmux or similar. This vim plugin might be nice for automating interactions between the two tmux panes.
Otherwise you'll need to use a plugin for doing terminal stuff from within gvim. vimshell and conque look relevant in this space.