GHCi commands all begin with
‘:’ and consist of a single command
name followed by zero or more parameters. The command name may be
abbreviated, as long as the abbreviation is not ambiguous. All of
the builtin commands, with the exception of
:unset and :undef, may be
abbreviated to a single letter.

:addmodule ...

Add module(s) to the
current target set, and perform a
reload.

:cddir

Changes the current working directory to
dir. A
‘˜’ symbol at the
beginning of dir will be replaced
by the contents of the environment variable
HOME.

:defnameexpr

The command :defnameexpr defines a new GHCi command
:name,
implemented by the Haskell expression
expr, which must have type
String -> IO String. When
:nameargs is typed at the
prompt, GHCi will run the expression
(nameargs), take the
resulting String, and feed it back into
GHCi as a new sequence of commands. Separate commands in
the result must be separated by
‘\n’.

That's all a little confusing, so here's a few
examples. To start with, here's a new GHCi command which
doesn't take any arguments or produce any results, it just
outputs the current date & time:

Or I could define a simple way to invoke
“ghc ––make Main” in the
current directory:

Prelude> :def make (\_ -> return ":! ghc ––make Main")

:help, :?

Displays a list of the available commands.

:infoname
...

Displays information about the given name(s). For
example, if name is a class, then
the class methods and their types will be printed; if
name is a type constructor, then
its definition will be printed; if
name is a function, then its type
will be printed. If name has
been loaded from a source file, then GHCi will also display
the location of its definition in the source.

:loadmodule ...

Recursively loads the specified
modules, and all the modules they
depend on. Here, each module
must be a module name or filename, but may not be the name
of a module in a package.

All previously loaded modules, except package modules,
are forgotten. The new set of modules is known as the
target set.

After a :load command, the current
context is set to:

module, if it was loaded
successfully, or

the most recently successfully loaded module, if
any other modules were loaded as a result of the current
:load, or

Prelude otherwise.

:modulemodule

Sets the current context for statements typed at the
prompt to module, which must be a
module name which is already loaded or in a package. See
Section 3.4.1 for more information on what
effect the context has on what entities are in scope at the
prompt.

:quit

Quits GHCi. You can also quit by typing a control-D
at the prompt.

:reload

Attempts to reload the current target set (see
:load) if any of the modules in the set,
or any dependent module, has changed. Note that this may
entail loading new modules, or dropping modules which are no
longer indirectly required by the target.

:set [option...]

Sets various options. See Section 3.7
for a list of available options. The
:set command by itself shows which
options are currently set.

:typeexpression

Infers and prints the type of
expression, including explicit
forall quantifiers for polymorphic types. The monomorphism
restriction is not applied to the
expression during type inference.

:undefname

Undefines the user-defined command
name (see :def
above).

:unsetoption...

Unsets certain options. See Section 3.7
for a list of available options.