Invoking GHCi

The Glasgow Haskell Compiler User's Guide, Version 5.04
Prev | Chapter 3. Using GHCi | Next

# 3.5. Invoking GHCi

GHCi is invoked with the command `ghci` or `ghc ––interactive`. One or more modules or filenames can also be specified on the command line; this instructs GHCi to load the specified modules or filenames (and all the modules they depend on), just as if you had said `:load `modules`` at the GHCi prompt (see Section 3.6). For example, to start GHCi and load the program whose topmost module is in the file `Main.hs`, we could say:

    $ ghci Main.hs

Most of the command-line options accepted by GHC (see Chapter 4) also make sense in interactive mode. The ones that don't make sense are mostly obvious; for example, GHCi doesn't generate interface files, so options related to interface file generation won't have any effect.

## 3.5.1. Packages

GHCi can make use of all the packages that come with GHC, For example, to start up GHCi with the `network` package loaded:

    $ ghci -package network
       ___         ___ _
      / _ \ /\  /\/ __(_)
     / /_\// /_/ / /  | |      GHC Interactive, version 5.04, for Haskell 98.
    / /_\\/ __  / /___| |      http://www.haskell.org/ghc/
    \____/\/ /_/\____/|_|      Type :? for help.

    Loading package base ... linking ... done.
    Loading package haskell98 ... linking ... done.
    Loading package network ... linking ... done.
    Prelude>

Note that GHCi will also automatically load any packages on which the requested package depends.

The following command works to load new packages into a running GHCi:

    Prelude> :set -package name

But note that doing this will cause all currently loaded modules to be unloaded, and you'll be dumped back into the Prelude.

## 3.5.2. Extra libraries

Extra libraries may be specified on the command line using the normal `-l`lib`` option. For example, to load the “m” library:

    $ ghci -lm

On systems with `.so`-style shared libraries, the actual library loaded will the `lib`lib`.so`. GHCi searches the following places for libraries, in this order:

- Paths specified using the `-L`path`` command-line option,

- the standard library search path for your system, which on some systems may be overriden by setting the `LD_LIBRARY_PATH` environment variable.

On systems with `.dll`-style shared libraries, the actual library loaded will be ``lib`.dll`. Again, GHCi will signal an error if it can't find the library.

GHCi can also load plain object files (`.o` or `.obj` depending on your platform) from the command-line. Just add the name the object file to the command line.

Prev | Home | Next
Interactive evaluation at the prompt | Up | GHCi commands