utop is a toplevel for OCaml which can run in a terminal or in emacs.
It supports completion, colors, parenthesis matching, ...
