X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fghci.xml;h=749b4d60ab280e7d9895ac72ad74d232bb6cc455;hb=ea283aa74e6fd2bec2b88eae19908bba903adea1;hp=cc237121252980b88301a232491249ba74104cd1;hpb=b7a8e7a57804c55a1b12364604147f8fab891c00;p=ghc-hetmet.git
diff --git a/docs/users_guide/ghci.xml b/docs/users_guide/ghci.xml
index cc23712..749b4d6 100644
--- a/docs/users_guide/ghci.xml
+++ b/docs/users_guide/ghci.xml
@@ -49,6 +49,8 @@ Prelude>
:browse [*]<module> display the names defined by <module>
:cd <dir> change directory to <dir>
:def <cmd> <expr> define a command :<cmd>
+ :edit <file> edit file
+ :edit edit last module
:help, :? display this list of commands
:info [<name> ...] display information about the given names
:load <filename> ... load module(s) and their dependents
@@ -60,6 +62,7 @@ Prelude>
:set args <arg> ... set the arguments returned by System.getArgs
:set prog <progname> set the value returned by System.getProgName
:set prompt <prompt> set the prompt used in GHCi
+ :set editor <cmd> set the command used for :edit
:show modules show the currently loaded modules
:show bindings show the current bindings made at the prompt
@@ -350,7 +353,7 @@ Ok, modules loaded: A, B, C, D.
HINT: since GHCi will only use a compiled object file if it
- can sure that the compiled version is up-to-date, a good technique
+ can be sure that the compiled version is up-to-date, a good technique
when working on a large program is to occasionally run
ghc ––make to compile the whole project (say
before you go for lunch :-), then continue working in the
@@ -402,7 +405,7 @@ hello
-
+ Using do-notation at the promptdo-notationin GHCistatementsin GHCi
@@ -444,7 +447,13 @@ Prelude>
Show
-
+ The automatic printing of binding results can be supressed with
+ (this does not
+ supress printing the result of non-binding statements).
+ .
+ You might want to do this to prevent the result of binding
+ statements from being fully evaluated by the act of printing
+ them, for example.
Of course, you can also bind normal non-IO expressions
using the let-statement:
@@ -561,9 +570,9 @@ Compiling Main ( Main.hs, interpreted )
Prelude> :module +IO
-Prelude,IO> hPutStrLn stdout "hello\n"
+Prelude IO> hPutStrLn stdout "hello\n"
hello
-Prelude,IO>
+Prelude IO>
(Note: :module can be shortened to
@@ -593,7 +602,7 @@ Prelude,IO>
Bar, then the scope will be set to
*Bar if Bar is
interpreted, or if Bar is compiled it will be
- set to Prelude,Bar (GHCi automatically adds
+ set to Prelude Bar (GHCi automatically adds
Prelude if it isn't present and there aren't
any *-form modules).
@@ -604,6 +613,12 @@ Prelude,IO>
behaves in the same way for expressions typed at the
prompt.
+
+ Hint: GHCi will tab-complete names that are in scope; for
+ example, if you run GHCi and type J<tab>
+ then GHCi will expand it to Just .
+
+
Qualified names
@@ -612,6 +627,34 @@ Prelude,IO>
qualified declaration for every module in every
package, and every module currently loaded into GHCi.
+
+
+ The :main command
+
+
+ When a program is compiled and executed, it can use the
+ getArgs function to access the
+ command-line arguments.
+ However, we cannot simply pass the arguments to the
+ main function while we are testing in ghci,
+ as the main function doesn't take its
+ directly.
+
+
+
+ Instead, we can use the :main command.
+ This runs whatever main is in scope, with
+ any arguments being treated the same as command-line arguments,
+ e.g.:
+
+
+
+Prelude> let main = System.Environment.getArgs >>= print
+Prelude> :main foo bar
+["foo","bar"]
+
+
+
@@ -633,9 +676,9 @@ Prelude> it * 2
expression, and if it doesn't have an IO type,
then it transforms it as follows: an expression
e turns into
-
- let it = e;
- print it
+
+let it = e;
+print it
which is then run as an IO-action.
@@ -644,10 +687,14 @@ Prelude> it * 2
complain:
-Prelude> id
-No instance for `Show (a -> a)'
-arising from use of `print'
-in a `do' expression pattern binding: print it
+Prelude> id
+
+<interactive>:1:0:
+ No instance for (Show (a -> a))
+ arising from use of `print' at <interactive>:1:0-1
+ Possible fix: add an instance declaration for (Show (a -> a))
+ In the expression: print it
+ In a 'do' expression: print it
The error message contains some clues as to the
@@ -659,14 +706,15 @@ in a `do' expression pattern binding: print it
which is of type a. eg.:
Prelude> Time.getClockTime
+Wed Mar 14 12:23:13 GMT 2001
Prelude> print it
Wed Mar 14 12:23:13 GMT 2001
The corresponding translation for an IO-typed
e is
-
- it <- e
+
+it <- e
@@ -759,22 +807,15 @@ $ ghci Main.hs
package be loaded by using the -package flag:
-$ ghci -package data
+$ ghci -package readline
___ ___ _
/ _ \ /\ /\/ __(_)
- / /_\// /_/ / / | | GHC Interactive, version 5.05, for Haskell 98.
+ / /_\// /_/ / / | | GHC Interactive, version 6.6, for Haskell 98.
/ /_\\/ __ / /___| | http://www.haskell.org/ghc/
\____/\/ /_/\____/|_| Type :? for help.
Loading package base ... linking ... done.
-Loading package haskell98 ... linking ... done.
-Loading package lang ... linking ... done.
-Loading package concurrent ... linking ... done.
-Loading package readline ... linking ... done.
-Loading package unix ... linking ... done.
-Loading package posix ... linking ... done.
-Loading package util ... linking ... done.
-Loading package data ... linking ... done.
+Loading package readline-1.0 ... linking ... done.
Prelude>
@@ -847,10 +888,8 @@ $ ghci -lm
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.
+ abbreviated, with ambiguities being resolved in favour of the more
+ commonly used commands.
@@ -977,6 +1016,22 @@ Prelude> :. cmds.ghci
+ :edit file
+ :edit
+
+
+ Opens an editor to edit the file
+ file, or the most recently loaded
+ module if file is omitted. The
+ editor to invoke is taken from the EDITOR
+ environment variable, or a default editor on your system if
+ EDITOR is not set. You can change the
+ editor using :set editor.
+
+
+
+
+ :help:help
@@ -1048,6 +1103,38 @@ Prelude> :. cmds.ghci
+ :main arg1 ... argn
+ :main
+
+
+
+ When a program is compiled and executed, it can use the
+ getArgs function to access the
+ command-line arguments.
+ However, we cannot simply pass the arguments to the
+ main function while we are testing in ghci,
+ as the main function doesn't take its
+ directly.
+
+
+
+ Instead, we can use the :main command.
+ This runs whatever main is in scope, with
+ any arguments being treated the same as command-line arguments,
+ e.g.:
+
+
+
+Prelude> let main = System.Environment.getArgs >>= print
+Prelude> :main foo bar
+["foo","bar"]
+
+
+
+
+
+
+ :module +|-*mod1 ... *modn:module
@@ -1110,6 +1197,16 @@ Prelude> :. cmds.ghci
+ :seteditorcmd
+
+
+ Sets the command used by :edit to
+ cmd.
+
+
+
+
+ :setprogprog:set prog