<?xml version="1.0" encoding="iso-8859-1"?>
<chapter id="runghc">
  <title>Using runghc</title>
  <indexterm><primary>runghc</primary></indexterm>

  <para>runghc allows you to run Haskell programs without first having
  to compile them.</para>

  <sect1 id="runghc-introduction">
    <title>Flags</title>

    <para>The runghc commandline looks like:</para>
<screen>
runghc [runghc flags] [GHC flags] module [program args]
</screen>
    <para>The runghc flags are
    <literal>-f /path/to/ghc</literal>,
    which tells runghc which GHC to use to run the program,
    and <literal>--help</literal>, which prints usage information. If it is
    not given then runghc will search for GHC in the directories in the
    system search path.</para>

    <para>runghc will try to work out where the boundaries between
    <literal>[runghc flags]</literal> and
    <literal>[GHC flags]</literal>, and
    <literal>[program args]</literal> and
    <literal>module</literal> are, but you can use a
    <literal>--</literal> flag if it doesn't get it right. For example,
    <literal>runghc -- -fglasgow-exts Foo</literal> means runghc
    won't try to use <literal>glasgow-exts</literal> as the path to GHC,
    but instead will pass the flag to GHC. If a GHC flag doesn't start
    with a dash then you need to prefix it with
    <literal>--ghc-arg=</literal> or runghc will think that it is the
    program to run, e.g.
    <literal>runghc -package-conf --ghc-arg=foo.conf Main.hs</literal>.
    </para>

  </sect1>

</chapter>

<!-- Emacs stuff:
     ;;; Local Variables: ***
     ;;; mode: xml ***
     ;;; sgml-parent-document: ("users_guide.xml" "book" "chapter") ***
     ;;; End: ***
 -->
