X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=docs%2Fusers_guide%2Fghci.xml;h=ebf195b2a622f65a19016efb3ada34756b30fce9;hp=80205954e5ecf0b2e9ee299eda9fa679478073e8;hb=4edbeb14e25f71824c53c524028d12440928707e;hpb=a056bcdea7901557f8c97f0da69ae194338e550d
diff --git a/docs/users_guide/ghci.xml b/docs/users_guide/ghci.xml
index 8020595..ebf195b 100644
--- a/docs/users_guide/ghci.xml
+++ b/docs/users_guide/ghci.xml
@@ -58,8 +58,52 @@ Prelude>
GHCi interprets the whole line as an expression to evaluate.
- The expression may not span several lines - as soon as you press
- enter, GHCi will attempt to evaluate it.
+ The expression may not span several lines - as soon as you press enter,
+ GHCi will attempt to evaluate it.
+
+ GHCi also has a multiline mode,
+ :set +m,
+ which is terminated by an empty line:
+
+
+Prelude> :set +m
+Prelude> let x = 42 in x / 9
+Prelude|
+4.666666666666667
+Prelude>
+
+
+ In Haskell, a let expression is followed
+ by in. However, in GHCi, since the expression
+ can also be interpreted in the IO monad,
+ a let binding with no accompanying
+ in statement can be signalled by an empty line,
+ as in the above example.
+
+ Multiline mode is useful when entering monadic
+ do statements:
+
+
+Control.Monad.State> flip evalStateT 0 $ do
+Control.Monad.State| i <- get
+Control.Monad.State| lift $ do
+Control.Monad.State| putStrLn "Hello World!"
+Control.Monad.State| print i
+Control.Monad.State|
+"Hello World!"
+0
+Control.Monad.State>
+
+
+ During a multiline interaction, the user can interrupt and
+ return to the top-level prompt.
+
+
+Prelude> do
+Prelude| putStrLn "Hello, World!"
+Prelude| ^C
+Prelude>
+
@@ -2627,6 +2671,18 @@ bar
+ +m
+ +m
+
+
+ Enable parsing of multiline commands. A multiline command
+ is prompted for when the current input line contains open layout
+ contexts.
+
+
+
+
+
+r
+r
CAFsin GHCi