35694a5eff8d282b8c7f7a9b9280042105e026db
[ghc-hetmet.git] / ghc / docs / users_guide / ghci.sgml
1 <chapter id="ghci">
2   <title>Using GHCi</title>
3   <indexterm><primary>GHCi</primary></indexterm>
4   <indexterm><primary>interpreter</primary><see>GHCi</see></indexterm>
5   <indexterm><primary>interactive</primary><see>GHCi</see></indexterm>
6   
7   <para>GHCi<footnote>
8       <para>The &lsquo;i&rsquo; stands for &ldquo;Interactive&rdquo;</para>
9     </footnote>
10   is GHC's interactive environment, in which Haskell expressions can
11   be interactively evaluated and programs can be interpreted.  If
12   you're famililar with Hugs<indexterm><primary>Hugs</primary>
13   </indexterm>, then you'll be right at home with GHCi.  However, GHCi
14   also has support for interactively loading compiled code, as well as
15   supporting all<footnote><para>except the FFI, at the moment</para>
16   </footnote>the language extensions that GHC provides.</para>
17   <indexterm><primary>FFI</primary><secondary>GHCi support</secondary></indexterm>
18   <indexterm><primary>Foreign Function Interface</primary><secondary>GHCi support</secondary></indexterm>
19
20   <sect1>
21     <title>Introduction to GHCi</title>
22
23     <para>Let's start with an example GHCi session.  You can fire up
24     GHCi with the command <literal>ghci</literal>:</para>
25
26 <screen>
27 $ ghci
28    ___         ___ _
29   / _ \ /\  /\/ __(_)
30  / /_\// /_/ / /  | |      GHC Interactive, version 4.11, For Haskell 98.
31 / /_\\/ __  / /___| |      http://www.haskell.org/ghc/
32 \____/\/ /_/\____/|_|      Type :? for help.
33
34 Loading package std ... linking ... done.
35 Prelude> 
36 </screen>
37
38     <para>There may be a short pause while GHCi loads the prelude and
39     standard libraries, after which the prompt is shown.  If we follow
40     the instructions and type <literal>:?</literal> for help, we
41     get:</para>
42
43 <screen>
44  Commands available from the prompt:
45    &lt;stmt&gt;              evaluate/run &lt;stmt&gt;
46    :cd &lt;dir&gt;           change directory to &lt;dir&gt;
47    :def &lt;cmd&gt; &lt;expr&gt;   define a macro :&lt;cmd&gt;
48    :help, :?           display this list of commands
49    :load &lt;filename&gt;    load a module (and it dependents)
50    :module &lt;mod&gt;       set the context for expression evaluation to &lt;mod&gt;
51    :reload             reload the current module set
52    :set &lt;option&gt; ...   set options
53    :type &lt;expr&gt;        show the type of &lt;expr&gt;
54    :unset &lt;option&gt; ... unset options
55    :quit               exit GHCi
56    :!&lt;command&gt;         run the shell command &lt;command&gt;
57  Options for `:set' and `:unset':
58     +r                 revert top-level expressions after each evaluation
59     +s                 print timing/memory stats after each evaluation
60     +t                 print type after evaluation
61     -&lt;flag&gt;            most GHC command line flags can also be set here
62                          (eg. -v2, -fglasgow-exts, etc.)
63 </screen>
64
65     <para>We'll explain most of these commands as we go along.  For
66     Hugs users: many things work the same as in Hugs, so you should be
67     able to get going straight away.</para>
68
69     <para>Haskell expressions can be typed at the prompt:</para>
70     <indexterm><primary>prompt</primary><secondary>GHCi</secondary>
71   </indexterm>
72
73 <screen>
74 Prelude> 1+2
75 3
76 PrePrelude> let x = 42 in x / 9
77 4.666666666666667
78 Prelude> 
79 </screen>
80
81     <para>GHCi interprets the whole line as an expression to evaluate.
82     The expression may not span several lines - as soon as you press
83     enter, GHCi will attempt to evaluate it.</para>
84   </sect1>
85
86   <sect1>
87     <title>Loading source files</title>
88
89     <para>Suppose we have the following Haskell source code, which we
90     place in a file <filename>Main.hs</filename> in the current
91     directory:</para>
92
93 <programlisting>
94 main = print (fac 20)
95
96 fac 0 = 1
97 fac n = n * fac (n-1)
98 </programlisting>
99
100     <para>To load a Haskell source file into GHCi, use the
101     <literal>:load</literal> command:</para>
102     <indexterm><primary><literal>:load</literal></primary></indexterm>
103
104 <screen>
105 Prelude> :load Main
106 Compiling Main             ( Main.hs, interpreted )
107 Ok, modules loaded: Main.
108 Main>
109 </screen>
110
111     <para>GHCi has loaded the <literal>Main</literal> module, and the
112     prompt has changed to &ldquo;<literal>Main></literal>&rdquo; to
113     indicate that the current context for expressions typed at the
114     prompt is the <literal>Main</literal> module we just
115     loaded.  So we can now type expressions involving the functions
116     from <filename>Main.hs</filename>:</para>
117
118 <screen>
119 Main> fac 17
120 355687428096000
121 </screen>
122
123     <para>Loading a multi-module program is just as straightforward;
124     just give the name of the &ldquo;topmost&rdquo; module to the
125     <literal>:load</literal> command (hint: <literal>:load</literal>
126     can be abbreviated to <literal>:l</literal>).  The topmost module
127     will normally be <literal>Main</literal>, but it doesn't have to
128     be.  GHCi will discover which modules are required, directly or
129     indirectly, by the topmost module, and load them all in dependency
130     order.</para>
131
132     <sect2>
133       <title>Modules vs. filenames</title>
134       <indexterm><primary>modules</primary><secondary>and filenames</secondary></indexterm>
135       <indexterm><primary>filenames</primary><secondary>of modules</secondary></indexterm>
136       
137       <para>Question: How does GHC find the filename which contains
138       module <replaceable>M</replaceable>?  Answer: it looks for the
139       file <literal><replaceable>M</replaceable>.hs</literal>, or
140       <literal><replaceable>M</replaceable>.lhs</literal>.  This means
141       that for most modules, the module name must match the filename.
142       If it doesn't, GHCi won't be able to find it.</para>
143
144       <para>There is one exception to this general rule: when you load
145       a program with <literal>:load</literal>, or specify it when you
146       invoke <literal>ghci</literal>, you can give a filename rather
147       than a module name.  This filename is loaded if it exists, and
148       it may contain any module you like.  This is particularly
149       convenient if you have several <literal>Main</literal> modules
150       in the same directory and you can't call them all
151       <filename>Main.hs</filename>.</para>
152
153       <para>One final note: if you load a module called Main, it must
154       contain a <literal>main</literal> function, just like in
155       GHC.</para>
156     </sect2>
157
158     <sect2>
159       <title>Making changes and recompilation</title>
160       <indexterm><primary><literal>:reload</literal></primary></indexterm>
161
162       <para>If you make some changes to the source code and want GHCi
163       to recompile the program, give the <literal>:reload</literal>
164       command.  The program will be recompiled as necessary, with GHCi
165       doing its best to avoid actually recompiling modules if their
166       external dependencies haven't changed.  This is the same
167       mechanism we use to avoid re-compiling modules in the batch
168       compilation setting (see <xref linkend="recomp">).</para>
169     </sect2>
170   </sect1>
171
172   <sect1 id="ghci-compiled">
173     <title>Loading compiled code</title>
174     <indexterm><primary>compiled code</primary><secondary>in GHCi</secondary></indexterm>
175
176     <para>When you load a Haskell source module into GHCi, it is
177     normally converted to byte-code and run using the interpreter.
178     However, interpreted code can also run alongside compiled code in
179     GHCi; indeed, normally when GHCi starts, it loads up a compiled
180     copy of package <literal>std</literal>, which contains the Prelude
181     and standard libraries.</para>
182
183     <para>Why should we want to run compiled code?  Well, compiled
184     code is roughly 10x faster than interpreted code, but takes about
185     2x longer to produce (perhaps longer if optimisation is on).  So
186     it pays to compile the parts of a program that aren't changing
187     very often, and use the interpreter for the code being actively
188     developed.</para>
189
190     <para>When loading up source files with <literal>:load</literal>,
191     GHCi looks for any corresponding compiled object files, and will
192     use one in preference to interpreting the source if possible.  For
193     example, suppose we have a 4-module program consisting of modules
194     A, B, C, and D.  Modules B and C both import D only,
195     and A imports both B & C:</para>
196 <screen>
197       A
198      / \
199     B   C
200      \ /
201       D
202 </screen>
203     <para>We can compile D, then load the whole program, like this:</para>
204 <screen>
205 Prelude> :! ghc -c D.hs
206 Prelude> :load A
207 Skipping  D                ( D.hs, D.o )
208 Compiling C                ( C.hs, interpreted )
209 Compiling B                ( B.hs, interpreted )
210 Compiling A                ( A.hs, interpreted )
211 Ok, modules loaded: A, B, C, D.
212 Main>
213 </screen>
214
215     <para>In the messages from the compiler, we see that it skipped D,
216     and used the object file <filename>D.o</filename>.  The message
217     <literal>Skipping</literal> <replaceable>module</replaceable>
218     indicates that compilation for <replaceable>module</replaceable>
219     isn't necessary, because the source and everything it depends on
220     is unchanged since the last compilation.</para>
221
222     <para>If we now modify the source of D (or pretend to: using Unix
223     command <literal>touch</literal> on the source file is handy for
224     this), the compiler will no longer be able to use the object file,
225     because it might be out of date:</para>
226
227 <screen>
228 Main> :! touch D.hs
229 Main> :reload
230 Compiling D                ( D.hs, interpreted )
231 Skipping  C                ( C.hs, interpreted )
232 Skipping  B                ( B.hs, interpreted )
233 Skipping  A                ( A.hs, interpreted )
234 Ok, modules loaded: A, B, C, D.
235 Main> 
236 </screen>
237
238     <para>Note that module D was compiled, but in this instance
239     because its source hadn't really changed, its interface remained
240     the same, and the recompilation checker determined that A, B and C
241     didn't need to be recompiled.</para>
242
243     <para>So let's try compiling one of the other modules:</para>
244
245 <screen>
246 Main> :! ghc -c C.hs
247 Main> :load A
248 Compiling D                ( D.hs, interpreted )
249 Compiling C                ( C.hs, interpreted )
250 Compiling B                ( B.hs, interpreted )
251 Compiling A                ( A.hs, interpreted )
252 Ok, modules loaded: A, B, C, D.
253 </screen>
254
255     <para>We didn't get the compiled version of C!  What happened?
256     Well, in GHCi a compiled module may only depend on other compiled
257     modules, and in this case C depends on D, which doesn't have an
258     object file, so GHCi also rejected C's object file.  Ok, so let's
259     also compile D:</para>
260
261 <screen>
262 Main> :! ghc -c D.hs
263 Main> :reload
264 Ok, modules loaded: A, B, C, D.
265 </screen>
266
267     <para>Nothing happened!  Here's another lesson: newly compiled
268     modules aren't picked up by <literal>:reload</literal>, only
269     <literal>:load</literal>:</para>
270
271 <screen>
272 Main> :load A
273 Skipping  D                ( D.hs, D.o )
274 Skipping  C                ( C.hs, C.o )
275 Compiling B                ( B.hs, interpreted )
276 Compiling A                ( A.hs, interpreted )
277 Ok, modules loaded: A, B, C, D.
278 </screen>
279
280     <para>HINT: since GHCi will only use a compiled object file if it
281     can sure that the compiled version is up-to-date, a good technique
282     when working on a large program is to occasionally run
283     <literal>ghc --make</literal> to compile the whole project (say
284     before you go for lunch :-), then continue working in the
285     interpreter.  As you modify code, the new modules will be
286     interpreted, but the rest of the project will remain
287     compiled.</para>
288
289   </sect1>
290
291   <sect1>
292     <title>Interactive evaluation at the prompt</title>
293
294     <para>When you type an expression at the prompt, GHCi immediately
295     evaluates and prints the result.  But that's not the whole story:
296     if you type something of type <literal>IO a</literal> for some
297     <literal>a</literal>, then GHCi <emphasis>executes</emphasis> it
298     as an IO-computation, and doesn't attempt to print the
299     result:.</para>
300
301 <screen>
302 Prelude> "hello"
303 "hello"
304 Prelude> putStrLn "hello"
305 hello
306 </screen>
307
308     <para>What actually happens is that GHCi typechecks the
309     expression, and if it doesn't have an <literal>IO</literal> type,
310     then it transforms it as follows: an expression
311     <replaceable>e</replaceable> turns into 
312 <screen>     
313              let it = <replaceable>e</replaceable>;
314              print it
315 </screen>
316     which is then run as an IO-action.</para>
317
318     <para>Hence, the original expression must have a type which is an
319     instance of the <literal>Show</literal> class, or GHCi will
320     complain:</para>
321
322 <screen>
323 Prelude> id
324 No instance for `Show (a -> a)'
325 arising from use of `print'
326 in a `do' expression pattern binding: print it
327 </screen>
328
329     <para>The error message contains some clues as to the
330     transformation happening internally.</para>
331
332     <sect2 id="ghci-scope">
333       <title>What's really in scope at the prompt?</title> 
334
335        <para>When you type an expression at the prompt, what
336        identifiers and types are in scope?  GHCi has a concept of a
337        <firstterm>context</firstterm> module, which can be set using
338        the <literal>:module</literal> command.</para>
339
340       <para>The context module is shown in the prompt: for example,
341       the prompt <literal>Prelude></literal> indicates that the
342       current context for evaluating expressions is the Haskell
343       <literal>Prelude</literal> module.  The Prelude is the default
344       context when you start up GHCi.</para>
345       <indexterm><primary><literal>Prelude</literal></primary></indexterm>
346
347       <para>Exactly which entities are in scope in a given context
348       depends on whether the context module is compiled or
349       interpreted:</para>
350
351       <itemizedlist>
352         <listitem>
353           <para>If the context module is interpreted, then everything
354           that was in scope during compilation of that module is also
355           in scope at the prompt, i.e. all the imports and any
356           top-level functions, types and classes defined in that
357           module.</para>
358         </listitem>
359
360         <listitem>
361           <para>If the context module comes from a package, or is
362           otherwise compiled, then only the exports of that module are
363           in scope at the prompt.  So for example, when the current
364           context module is <literal>Prelude</literal>, everything the
365           <literal>Prelude</literal> exports is in scope, but if we
366           switch context to eg. <literal>Time</literal>, then
367           everything from the <literal>Prelude</literal> is now
368           invisible.</para>
369         </listitem>
370       </itemizedlist>
371
372       <para>The reason for this unfortunate distinction is boring: for
373       a compiled module when the source isn't available, the compiler
374       has no way of knowing what was in scope when the module was
375       compiled (and we don't store this information in the interface
376       file).  However, in practice it shouldn't be a problem: if you
377       want both <literal>Time</literal> and <literal>Prelude</literal>
378       in scope at the same time, just create a file containing the
379       line <literal>import Time</literal> and load it into
380       GHCi.</para>
381
382       <para>To make life slightly easier, the GHCi prompt also behaves
383       as if there is an implicit <literal>import qualified</literal>
384       declaration for every module in every package, and every module
385       currently loaded into GHCi.  So in the above example where the
386       <literal>Prelude</literal> was invisible, we can always get at
387       <literal>Prelude</literal> identifiers by qualifying them, eg.
388       <literal>Prelude.map</literal>.</para>
389     </sect2>
390   
391     <sect2>
392       <title>Using <literal>do-</literal>notation at the prompt</title>
393       <indexterm><primary>do-notation</primary><secondary>in GHCi</secondary></indexterm>
394       <indexterm><primary>statements</primary><secondary>in GHCi</secondary></indexterm>
395       
396       <para>GHCi actually accepts <firstterm>statements</firstterm>
397       rather than just expressions at the prompt.  This means you can
398       bind values and functions to names, and use them in future
399       expressions or statements.</para>
400
401       <para>The syntax of a statement accepted at the GHCi prompt is
402       exactly the same as the syntax of a statement in a Haskell
403       <literal>do</literal> expression.  However, there's no monad
404       overloading here: statements typed at the prompt must be in the
405       <literal>IO</literal> monad.</para>
406
407       <para>Here's an example:</para>
408 <screen>
409 Prelude> x <- return 42
410 Prelude> print x
411 42
412 Prelude>
413 </screen>
414       <para>The statement <literal>x <- return 42</literal> means
415       &ldquo;execute <literal>return 42</literal> in the
416       <literal>IO</literal> monad, and bind the result to
417       <literal>x</literal>&rdquo;.  We can then use
418       <literal>x</literal> in future statements, for example to print
419       it as we did above.</para>
420
421       <para>Of course, you can also bind normal non-IO expressions
422       using the <literal>let</literal>-statement:</para>
423 <screen>
424 Prelude> let x = 42
425 Prelude> print x
426 42
427 Prelude>
428 </screen>
429       <para>An important difference between the two types of binding
430       is that the monadic bind (<literal>p <- e</literal>) is
431       <emphasis>strict</emphasis> (it evaluates <literal>e</literal>),
432       whereas with the <literal>let</literal> form, the expression
433       isn't evaluated immediately:</para>
434 <screen>
435 Prelude> let x = error "help!"
436 Prelude> print x
437 *** Exception: help!
438 Prelude>
439 </screen>
440       <para>Any exceptions raised during the evaluation or execution
441       of the statement are caught and printed by the GHCi command line
442       interface (see <xref linkend="sec-Exception"> for more
443       information on GHC's Exception support).</para>
444
445       <para>Every new binding shadows any existing bindings of the
446       same name, including entities that are in scope in the current
447       module context.</para>
448
449       <para>WARNING: temporary bindings introduced at the prompt only
450       last until the next <literal>:load</literal> or
451       <literal>:reload</literal> command, at which time they will be
452       simply lost.  However, they do survive a change of context with
453       <literal>:module</literal>: the temporary bindings just move to
454       the new location.</para>
455
456       <para>HINT: if you turn on the <literal>+t</literal> option,
457       GHCi will show the type of each variable bound by a statement.
458       For example:</para>
459       <indexterm><primary><literal>+t</literal></primary></indexterm>
460 <screen>
461 Prelude> :set +t
462 Prelude> let (x:xs) = [1..]
463 x :: Integer
464 xs :: [Integer]
465 </screen>
466
467     </sect2>
468
469     <sect2>
470       <title>The <literal>it</literal> variable</title>
471       <indexterm><primary><literal>it</literal></primary>
472       </indexterm>
473       
474       <para>Whenever an expression (or a non-binding statement, to be
475       precise) is typed at the prompt, GHCi implicitly binds its value
476       to the variable <literal>it</literal>.  For example:</para>
477 <screen>
478 Prelude> 1+2
479 3
480 Prelude> it * 2
481 6
482 </screen>
483
484       <para>This is a result of the translation mentioned earlier,
485       namely that an expression <replaceable>e</replaceable> is
486       translated to
487 <screen>     
488              let it = <replaceable>e</replaceable>;
489              print it
490 </screen>
491       before execution, resulting in a binding for
492       <literal>it</literal>.</para>
493
494       <para>If the expression was of type <literal>IO a</literal> for
495       some <literal>a</literal>, then <literal>it</literal> will be
496       bound to the result of the <literal>IO</literal> computation,
497       which is of type <literal>a</literal>.  eg.:</para>
498 <screen>
499 Prelude> Time.getClockTime
500 Prelude> print it
501 Wed Mar 14 12:23:13 GMT 2001
502 </screen>
503
504       <para>The corresponding translation for an IO-typed
505       <replaceable>e</replaceable> is
506 <screen>     
507              it <- <replaceable>e</replaceable>
508 </screen>
509       </para>
510
511       <para>Note that <literal>it</literal> is shadowed by the new
512       value each time you evaluate a new expression, and the old value
513       of <literal>it</literal> is lost.</para>
514
515     </sect2>
516   </sect1>
517
518   <sect1>
519     <title>Invoking GHCi</title>
520     <indexterm><primary>invoking</primary><secondary>GHCi</secondary></indexterm>
521     <indexterm><primary><option>--interactive</option></primary></indexterm>
522
523     <para>GHCi is invoked with the command <literal>ghci</literal> or
524     <literal>ghc --interactive</literal>.  A module or filename can
525     also be specified on the command line; this instructs GHCi to load
526     the that module or filename (and all the modules it depends on),
527     just as if you had said <literal>:load
528     <replaceable>module</replaceable></literal> at the GHCi prompt
529     (see <xref linkend="ghci-commands">).  For example, to start GHCi
530     and load the program whose topmost module is in the file
531     <literal>Main.hs</literal>, we could say:</para>
532
533 <screen>
534 $ ghci Main.hs
535 </screen>
536
537     <para>Note: only <emphasis>one</emphasis> module name or filename
538     may be given on the command line.</para>
539
540     <para>Most of the command-line options accepted by GHC (see <xref
541     linkend="using-ghc">) also make sense in interactive mode.  The ones
542     that don't make sense are mostly obvious; for example, GHCi
543     doesn't generate interface files, so options related to interface
544     file generation won't have any effect.</para>
545
546     <sect2>
547       <title>Packages</title>
548       <indexterm><primary>packages</primary><secondary>with GHCi</secondary></indexterm>
549
550       <para>GHCi can make use of all the packages that come with GHC,
551       but note: packages <emphasis>must</emphasis> be specified on the
552       GHCi command line, you can't add extra packages after GHCi has
553       started up.  For example, to start up GHCi with the
554       <literal>text</literal> package loaded:</para>
555
556 <screen>
557 $ ghci -package text
558    ___         ___ _
559   / _ \ /\  /\/ __(_)
560  / /_\// /_/ / /  | |      GHC Interactive, version 4.11, For Haskell 98.
561 / /_\\/ __  / /___| |      http://www.haskell.org/ghc/
562 \____/\/ /_/\____/|_|      Type :? for help.
563
564 Loading package std ... linking ... done.
565 Loading package lang ... linking ... done.
566 Loading package text ... linking ... done.
567 Prelude> 
568 </screen>      
569
570       <para>Note that GHCi also loaded the <literal>lang</literal>
571       package even though we didn't ask for it: that's because the
572       <literal>text</literal> package makes use of one or more of the
573       modules in <literal>lang</literal>, and therefore has a
574       dependency on it.</para>
575     </sect2>
576
577     <sect2>
578       <title>Extra libraries</title>
579       <indexterm><primary>libraries</primary><secondary>with GHCi</secondary></indexterm>
580       
581       <para>Extra libraries may be specified on the command line using
582       the normal <literal>-l<replaceable>lib</replaceable></literal>
583       option.  For example, to load the &ldquo;m&rdquo; library:</para>
584
585 <screen>
586 $ ghci -lm
587 </screen>
588
589       <para>On systems with <literal>.so</literal>-style shared
590       libraries, the actual library loaded will the
591       <filename>lib<replaceable>lib</replaceable>.so</filename>.  If
592       no such library exists on the standard library search path,
593       including paths given using
594       <literal>-L<replaceable>path</replaceable></literal>, then
595       <literal>ghci</literal> will signal an error.</para>
596
597       <para>On systems with <literal>.dll</literal>-style shared
598       libraries, the actual library loaded will be
599       <filename><replaceable>lib</replaceable>.dll</filename>.  Again,
600       GHCi will signal an error if it can't find the library.</para>
601     </sect2>
602
603   </sect1>
604
605   <sect1 id="ghci-commands">
606     <title>GHCi commands</title>
607
608     <para>GHCi commands all begin with
609     &lsquo;<literal>:</literal>&rsquo; and consist of a single command
610     name followed by zero or more parameters.  The command name may be
611     abbreviated, as long as the abbreviation is not ambiguous.  All of
612     the builtin commands, with the exception of
613     <literal>:unset</literal> and <literal>:undef</literal>, may be
614     abbreviated to a single letter.</para>
615
616     <variablelist>
617       <varlistentry>
618         <term><literal>:cd</literal> <replaceable>dir</replaceable></term>
619         <indexterm><primary><literal>:cd</literal></primary></indexterm>
620         <listitem>
621           <para>Changes the current working directory to
622           <replaceable>dir</replaceable>.  A
623           &lsquo;<literal>&tilde;</literal>&rsquo; symbol at the
624           beginning of <replaceable>dir</replaceable> will be replaced
625           by the contents of the environment variable
626           <literal>HOME</literal>.</para>
627         </listitem>
628       </varlistentry>
629
630       <varlistentry>
631         <term><literal>:def</literal></term>
632         <indexterm><primary><literal>:def</literal></primary></indexterm>
633         <listitem>
634           <para>ToDo.</para>
635         </listitem>
636       </varlistentry>
637
638       <varlistentry>
639         <term><literal>:help</literal></term>
640         <indexterm><primary><literal>:help</literal></primary></indexterm>
641         <term><literal>:?</literal></term>
642         <indexterm><primary><literal>:?</literal></primary></indexterm>
643         <listitem>
644           <para>Displays a list of the available commands.</para>
645         </listitem>
646       </varlistentry>
647
648       <varlistentry>
649         <term><literal>:load</literal> <replaceable>module</replaceable></term>
650         <indexterm><primary><literal>:load</literal></primary></indexterm>
651         <listitem>
652           <para>Recursively loads <replaceable>module</replaceable>
653           (which may be a module name or filename), and all the
654           modules it depends on.  All previously loaded modules are
655           forgotten.  The module <replaceable>module</replaceable> is
656           known as the <firstterm>target</firstterm>.</para>
657         </listitem>
658       </varlistentry>
659
660       <varlistentry>
661         <term><literal>:module</literal> <replaceable>module</replaceable></term>
662         <indexterm><primary><literal>:module</literal></primary></indexterm>
663         <listitem>
664           <para>Sets the current context for statements typed at the
665           prompt to <replaceable>module</replaceable>, which must be a
666           module name which is already loaded or in a package.  See
667           <xref linkend="ghci-scope"> for more information on what
668           effect the context has on what entities are in scope at the
669           prompt.</para>
670         </listitem>
671       </varlistentry>
672
673       <varlistentry>
674         <term><literal>:quit</literal> <replaceable>module</replaceable></term>
675         <indexterm><primary><literal>:quit</literal></primary></indexterm>
676         <listitem>
677           <para>Quits GHCi.  You can also quit by typing a control-D
678           at the prompt.</para>
679         </listitem>
680       </varlistentry>
681
682       <varlistentry>
683         <term><literal>:reload</literal></term>
684         <indexterm><primary><literal>:reload</literal></primary></indexterm>
685         <listitem>
686           <para>Attempts to reload the current target (see
687           <literal>:load</literal>) if it, or any module it depends
688           on, has changed.  Note that this may entail loading new
689           modules, or even dropping modules which are no longer
690           indirectly required by the target.</para>
691         </listitem>
692       </varlistentry>
693
694       <varlistentry>
695         <term><literal>:set</literal> <optional><replaceable>option</replaceable>...</optional></term>
696         <indexterm><primary><literal>:set</literal></primary></indexterm>
697         <listitem>
698           <para>Sets various options.  See <xref linkend="ghci-set">
699           for a list of available options.  The
700           <literal>:set</literal> command by itself shows which
701           options are currently set.</para>
702         </listitem>
703       </varlistentry>
704
705       <varlistentry>
706         <term><literal>:type</literal> <replaceable>expression</replaceable></term>
707         <indexterm><primary><literal>:type</literal></primary></indexterm>
708         <listitem>
709           <para>Infers and prints the type of
710           <replaceable>expression</replaceable>, including explicit
711           forall quantifiers for polymorphic types.  The monomorphism
712           restriction is <emphasis>not</emphasis> applied to the
713           expression during type inference.</para>
714         </listitem>
715       </varlistentry>
716
717       <varlistentry>
718         <term><literal>:unset</literal> <replaceable>option</replaceable>...</term>
719         <indexterm><primary><literal>:unset</literal></primary></indexterm>
720         <listitem>
721           <para>Unsets certain options.  See <xref linkend="ghci-set">
722           for a list of available options.</para>
723         </listitem>
724       </varlistentry>
725
726       <varlistentry>
727         <term><literal>:!</literal> <replaceable>command</replaceable>...</term>
728         <indexterm><primary><literal>:!</literal></primary></indexterm>
729         <indexterm><primary>shell commands</primary><secondary>in GHCi</secondary></indexterm>
730         <listitem>
731           <para>Executes the shell command
732           <replaceable>command</replaceable>.</para>
733         </listitem>
734       </varlistentry>
735
736     </variablelist>
737   </sect1>
738
739   <sect1 id="ghci-set">
740     <title>The <literal>:set</literal> command</title>
741     <indexterm><primary><literal>:set</literal></primary></indexterm>
742
743     <para>The <literal>:set</literal> command sets two types of
744     options: GHCi options, which begin with
745     &lsquo;<literal>+</literal>&rdquo; and &ldquo;command-line&rdquo;
746     options, which begin with &lsquo;-&rsquo;.  Either type of option
747     may be set using <literal>:set</literal> and unset using
748     <literal>:unset</literal>.</para>
749
750     <para>The available GHCi options are:</para>
751
752     <variablelist>
753       <varlistentry>
754         <term><literal>+r</literal></term>
755         <indexterm><primary><literal>+r</literal></primary></indexterm>
756         <indexterm><primary>CAFs</primary><secondary>in GHCi</secondary></indexterm>
757         <indexterm><primary>Constant Applicative Form</primary><see>CAFs</see></indexterm>
758         <listitem>
759           <para>Normally, any evaluation of top-level expressions
760           (otherwise known as CAFs or Constant Applicative Forms) in
761           loaded modules is retained between evaluations.  Turning on
762           <literal>+r</literal> causes all evaluation of top-level
763           expressions to be discarded after each evaluation (they are
764           still retained <emphasis>during</emphasis> a single
765           evaluation).</para>
766           
767           <para>This option may help if the evaluated top-level
768           expressions are consuming large amounts of space, or if you
769           need repeatable performance measurements.</para>
770         </listitem>
771       </varlistentry>
772
773       <varlistentry>
774         <term><literal>+s</literal></term>
775         <indexterm><primary><literal>+s</literal></primary></indexterm>
776         <listitem>
777           <para>Display some stats after evaluating each expression,
778           including the elapsed time and number of bytes allocated.
779           NOTE: the allocation figure is only accurate to the size of
780           the storage manager's allocation area, because it is
781           calculated at every GC.  Hence, you might see values of zero
782           if no GC has occurred.</para>
783         </listitem>
784       </varlistentry>
785
786       <varlistentry>
787         <term><literal>+t</literal></term>
788         <indexterm><primary><literal>+t</literal></primary></indexterm>
789         <listitem>
790           <para>Display the type of each variable bound after a
791           statement is entered at the prompt.  If the statement is a
792           single expression, then the only variable binding will be
793           for the variable &lsquo;<literal>it</literal>&rsquo;.</para>
794         </listitem>
795       </varlistentry>
796     </variablelist>
797
798     <para>In addition, any normal GHC command-line option that is
799     designated as <firstterm>dynamic</firstterm> (see the table in
800     <xref linkend="flag-reference">), may be set using
801     <literal>:set</literal>.  Certain static options
802     (<option>-I</option>, <option>-i</option>, and <option>-l</option>
803     in particular) will also work, but may not take effect until the
804     next reload.</para>
805     <indexterm><primary>dynamic</primary><secondary>options</secondary></indexterm>
806     <indexterm><primary>static</primary><secondary>options</secondary></indexterm>
807   </sect1>
808
809   <sect1>
810     <title>The <filename>.ghci</filename> file</title> 
811     <indexterm><primary><filename>.ghci</filename></primary><secondary>file</secondary>
812     </indexterm>
813     <indexterm><primary>startup</primary><secondary>files, GHCi</secondary>
814     </indexterm>
815
816     <para>When it starts, GHCi always reads and executes commands from
817     <filename>$HOME/.ghci</filename>, followed by
818     <filename>./.ghci</filename>.</para>
819
820     <para>The <filename>.ghci</filename> in your home directory is
821     most useful for turning on favourite options (eg. <literal>:set
822     +s</literal>), and defining useful macros.  Placing a
823     <filename>.ghci</filename> file in a directory with a Haskell
824     project is a useful way to set certain project-wide options so you
825     don't have to type them everytime you start GHCi: eg. if your
826     project uses GHC extensions and CPP, and has source files in three
827     subdirectories A B and C, you might put the following lines in
828     <filename>.ghci</filename>:</para>
829
830 <screen>
831 :set -fglasgow-exts -cpp
832 :set -iA:B:C
833 </screen>
834
835     <para>(Note that strictly speaking the <option>-i</option> flag is
836     a static one, but in fact it works to set it using
837     <literal>:set</literal> like this.  The changes won't take effect
838     until the next <literal>:load</literal>, though.)</para>
839   </sect1>
840
841   <sect1>
842     <title>FAQ and Things To Watch Out For</title>
843     
844     <variablelist>
845       <varlistentry>
846         <term><literal>System.exit</literal> causes GHCi to exit!</term>
847         <indexterm><primary><literal>System.exit</literal></primary><secondary>in
848         GHCi</secondary></indexterm>
849         <listitem>
850           <para>Yes, it does.</para>
851         </listitem>
852       </varlistentry>
853
854       <varlistentry>
855         <term><literal>System.getArgs</literal> returns GHCi's command
856         line arguments!</term>
857         <listitem>
858           <para>Yes, it does.</para>
859         </listitem>
860       </varlistentry>
861
862       <varlistentry>
863         <term>The interpreter can't load modules with FFI
864         declarations!</term>
865         <listitem>
866           <para>Unfortunately not.  We haven't implemented it yet.
867           Please compile any offending modules by hand before loading
868           them into GHCi.</para>
869         </listitem>
870       </varlistentry>
871
872       <varlistentry>
873         <term>Hugs has a <literal>:add</literal> command for adding
874         modules without throwing away any that are already loaded.
875         Why doesn't this work in GHCi?</term>
876         <listitem>
877           <para>We haven't implemented it yet.  Sorry about that.</para>
878         </listitem>
879       </varlistentry>
880
881       <varlistentry>
882         <term><literal>-O</literal> doesn't work with GHCi!</term>
883         <indexterm><primary><option>-O</option></primary>
884         </indexterm>
885         <listitem>
886           <para>For technical reasons, the bytecode compiler doesn't
887           interact well with one of the optimisation passes, so we
888           have disabled optimisation when using the interpreter.  This
889           isn't a great loss: you'll get a much bigger win by
890           compiling the bits of your code that need to go fast, rather
891           than interpreting them with optimisation turned on.</para>
892         </listitem>
893       </varlistentry>
894
895       <varlistentry>
896         <term>Unboxed tuples don't work with GHCi</term>
897         <listitem>
898           <para>That's right.  You can always compile a module that
899           uses unboxed tuples and load it into GHCi, however.
900           (Incidentally the previous point, namely that
901           <literal>-O</literal> is incompatible with GHCi, is because
902           the bytecode compiler can't deal with unboxed
903           tuples).</para>
904         </listitem>
905       </varlistentry>
906
907       <varlistentry>
908         <term>Concurrent threads don't carry on running when GHCi is
909         waiting for input.</term>
910         <listitem>
911           <para>No, they don't.  This is because the Haskell binding
912           to the GNU readline library doesn't support reading from the
913           terminal in a non-blocking way, which is required to work
914           properly with GHC's concurrency model.</para>
915         </listitem>
916       </varlistentry>
917     </variablelist>
918
919   </sect1>
920
921 </chapter>
922
923 <!-- Emacs stuff:
924      ;;; Local Variables: ***
925      ;;; mode: sgml ***
926      ;;; sgml-parent-document: ("users_guide.sgml" "book" "chapter") ***
927      ;;; End: ***
928  -->