[commit: ghc] master: GHCi docs: layout rule is respected inside :{ :} (7c8ffd3)

git at git.haskell.org git at git.haskell.org
Fri Jun 26 11:22:49 UTC 2015


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/7c8ffd3d8c328d5ca145fe15638ec5c952782132/ghc

>---------------------------------------------------------------

commit 7c8ffd3d8c328d5ca145fe15638ec5c952782132
Author: Thomas Miedema <thomasmiedema at gmail.com>
Date:   Wed Jun 24 12:52:16 2015 +0200

    GHCi docs: layout rule is respected inside :{ :}
    
    Summary:
    I don't know if or when this changed, but the documentation on :{ :}
    (multiline input) seems out of date. Layout rule works fine. I added a
    regression test.
    
    Reviewers: austin
    
    Subscribers: thomie, bgamari
    
    Differential Revision: https://phabricator.haskell.org/D1013


>---------------------------------------------------------------

7c8ffd3d8c328d5ca145fe15638ec5c952782132
 docs/users_guide/ghci.xml                   | 20 ++++++++------------
 testsuite/tests/ghci/scripts/ghci023.script | 11 +++++++++++
 testsuite/tests/ghci/scripts/ghci023.stdout |  2 ++
 3 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/docs/users_guide/ghci.xml b/docs/users_guide/ghci.xml
index d3b65ef..a1271e1 100644
--- a/docs/users_guide/ghci.xml
+++ b/docs/users_guide/ghci.xml
@@ -437,10 +437,10 @@ Prelude>
           <listitem>
             <para>The variable's type is not polymorphic, is not
               <literal>()</literal>, and is an instance of
-              <literal>Show</literal></para>
+              <literal>Show</literal>.</para>
           </listitem>
         </itemizedlist>
-      <indexterm><primary><option>-fprint-bind-result</option></primary></indexterm><indexterm><primary><option>-fno-print-bind-result</option></primary></indexterm>.
+      <indexterm><primary><option>-fprint-bind-result</option></primary></indexterm><indexterm><primary><option>-fno-print-bind-result</option></primary></indexterm>
       </para>
 
       <para>Of course, you can also bind normal non-IO expressions
@@ -477,9 +477,9 @@ Prelude>
         <para>However, this quickly gets tedious when defining functions
         with multiple clauses, or groups of mutually recursive functions,
         because the complete definition has to be given on a single line,
-        using explicit braces and semicolons instead of layout:</para>
+        using explicit semicolons instead of layout:</para>
 <screen>
-Prelude> let { f op n [] = n ; f op n (h:t) = h `op` f op n t }
+Prelude> let f op n [] = n ; f op n (h:t) = h `op` f op n t
 Prelude> f (+) 0 [1..3]
 6
 Prelude>
@@ -489,18 +489,14 @@ Prelude>
       <literal>:}</literal> (each on a single line of its own):</para>
 <screen>
 Prelude> :{
-Prelude| let { g op n [] = n
-Prelude|     ; g op n (h:t) = h `op` g op n t
-Prelude|     }
+Prelude| let g op n [] = n
+Prelude|     g op n (h:t) = h `op` g op n t
 Prelude| :}
 Prelude> g (*) 1 [1..3]
 6
 </screen>
       <para>Such multiline commands can be used with any GHCi command,
-      and the lines between <literal>:{</literal> and
-      <literal>:}</literal> are simply merged into a single line for
-      interpretation. That implies that each such group must form a single
-      valid command when merged, and that no layout rule is used.
+      and note that the layout rule is in effect.
       The main purpose of multiline commands is not to replace module
       loading but to make definitions in .ghci-files (see <xref
       linkend="ghci-dot-files"/>) more readable and maintainable.</para>
@@ -575,7 +571,7 @@ Prelude>
 </screen>
 
        <para>Explicit braces and semicolons can be used instead of
-         layout, as usual:</para>
+         layout:</para>
 
 <screen>
 Prelude> do {
diff --git a/testsuite/tests/ghci/scripts/ghci023.script b/testsuite/tests/ghci/scripts/ghci023.script
index dd77433..a21fcb6 100644
--- a/testsuite/tests/ghci/scripts/ghci023.script
+++ b/testsuite/tests/ghci/scripts/ghci023.script
@@ -9,6 +9,17 @@ putStrLn "-- via stdin"
   }
 :}
 print (f 0,f 1,y)
+
+putStrLn "-- layout rule instead of explicit braces and semicolons works too"
+:{
+  let
+   g 0 = 1
+   g 1 = w
+    where w = 2
+   z = 3
+:}
+print (g 0,g 1,z)
+
 :{
 :browse
   Data.Maybe
diff --git a/testsuite/tests/ghci/scripts/ghci023.stdout b/testsuite/tests/ghci/scripts/ghci023.stdout
index 010fe50..61a859a 100644
--- a/testsuite/tests/ghci/scripts/ghci023.stdout
+++ b/testsuite/tests/ghci/scripts/ghci023.stdout
@@ -1,6 +1,8 @@
 -- testing ghci multiline commands :{ .. :}
 -- via stdin
 (1,2,3)
+-- layout rule instead of explicit braces and semicolons works too
+(1,2,3)
 catMaybes :: [Maybe a] -> [a]
 fromJust :: Maybe a -> a
 fromMaybe :: a -> Maybe a -> a



More information about the ghc-commits mailing list