[project @ 2004-08-31 16:02:42 by ross]
authorross <unknown>
Tue, 31 Aug 2004 16:02:42 +0000 (16:02 +0000)
committerross <unknown>
Tue, 31 Aug 2004 16:02:42 +0000 (16:02 +0000)
markup fixes (and one typo) in arrow notation section

ghc/docs/users_guide/glasgow_exts.xml

index c82e369..5a22e7c 100644 (file)
@@ -3619,8 +3619,8 @@ The first line sends the value of <literal>x+1</literal> as an input to
 the arrow <literal>f</literal>, and matches its output against
 <literal>y</literal>.
 In the next line, the output is discarded.
 the arrow <literal>f</literal>, and matches its output against
 <literal>y</literal>.
 In the next line, the output is discarded.
-The arrow <literal>returnA</literal> is defined in the
-<ulink url="../base/Control.Arrow.html"><literal>Control.Arrow</literal></ulink>
+The arrow <function>returnA</function> is defined in the
+<ulink url="../libraries/base/Control.Arrow.html"><literal>Control.Arrow</literal></ulink>
 module as <literal>arr id</literal>.
 The above example is treated as an abbreviation for
 <screen>
 module as <literal>arr id</literal>.
 The above example is treated as an abbreviation for
 <screen>
@@ -3637,7 +3637,7 @@ arr (\ x -> (x, x)) >>>
 Note that variables not used later in the composition are projected out.
 After simplification using rewrite rules (see <xref linkend="rewrite-rules"/>)
 defined in the
 Note that variables not used later in the composition are projected out.
 After simplification using rewrite rules (see <xref linkend="rewrite-rules"/>)
 defined in the
-<ulink url="../base/Control.Arrow.html"><literal>Control.Arrow</literal></ulink>
+<ulink url="../libraries/base/Control.Arrow.html"><literal>Control.Arrow</literal></ulink>
 module, this reduces to
 <screen>
 arr (\ x -> (x+1, x)) >>>
 module, this reduces to
 <screen>
 arr (\ x -> (x+1, x)) >>>
@@ -3662,14 +3662,14 @@ so polymorphic variables are allowed.
 <para>
 It's also possible to have mutually recursive bindings,
 using the new <literal>rec</literal> keyword, as in the following example:
 <para>
 It's also possible to have mutually recursive bindings,
 using the new <literal>rec</literal> keyword, as in the following example:
-<screen>
+<programlisting>
 counter :: ArrowCircuit a => a Bool Int
 counter = proc reset -> do
         rec     output &lt;- returnA -&lt; if reset then 0 else next
                 next &lt;- delay 0 -&lt; output+1
         returnA -&lt; output
 counter :: ArrowCircuit a => a Bool Int
 counter = proc reset -> do
         rec     output &lt;- returnA -&lt; if reset then 0 else next
                 next &lt;- delay 0 -&lt; output+1
         returnA -&lt; output
-</screen>
-The translation of such forms uses the <literal>loop</literal> combinator,
+</programlisting>
+The translation of such forms uses the <function>loop</function> combinator,
 so the arrow concerned must belong to the <literal>ArrowLoop</literal> class.
 </para>
 
 so the arrow concerned must belong to the <literal>ArrowLoop</literal> class.
 </para>
 
@@ -3693,7 +3693,7 @@ which is translated to
 arr (\ (x,y) -> if f x y then Left x else Right y) >>>
         (arr (\x -> x+1) >>> f) ||| (arr (\y -> y+2) >>> g)
 </screen>
 arr (\ (x,y) -> if f x y then Left x else Right y) >>>
         (arr (\x -> x+1) >>> f) ||| (arr (\y -> y+2) >>> g)
 </screen>
-Since the translation uses <literal>|||</literal>,
+Since the translation uses <function>|||</function>,
 the arrow concerned must belong to the <literal>ArrowChoice</literal> class.
 </para>
 
 the arrow concerned must belong to the <literal>ArrowChoice</literal> class.
 </para>
 
@@ -3769,7 +3769,7 @@ and satisfy the corresponding naturality property
 arr k >>> (f &lt;+> g) = (arr k >>> f) &lt;+> (arr k >>> g)
 </screen>
 at least for strict <literal>k</literal>.
 arr k >>> (f &lt;+> g) = (arr k >>> f) &lt;+> (arr k >>> g)
 </screen>
 at least for strict <literal>k</literal>.
-(This should be automatic if you're not using <literal>seq</literal>.)
+(This should be automatic if you're not using <function>seq</function>.)
 This ensures that environments seen by the subcommands are environments
 of the whole command,
 and also allows the translation to safely trim these environments.
 This ensures that environments seen by the subcommands are environments
 of the whole command,
 and also allows the translation to safely trim these environments.
@@ -3825,7 +3825,7 @@ we are talking about commands, and something different is going on.
 The input to the arrow represented by a command consists of values for
 the free local variables in the command, plus a stack of anonymous values.
 In all the prior examples, this stack was empty.
 The input to the arrow represented by a command consists of values for
 the free local variables in the command, plus a stack of anonymous values.
 In all the prior examples, this stack was empty.
-In the second argument to <literal>handleA</literal>,
+In the second argument to <function>handleA</function>,
 this stack consists of one value, the value of the exception.
 The command form of lambda merely gives this value a name.
 </para>
 this stack consists of one value, the value of the exception.
 The command form of lambda merely gives this value a name.
 </para>
@@ -3833,8 +3833,9 @@ The command form of lambda merely gives this value a name.
 <para>
 More concretely,
 the values on the stack are paired to the right of the environment.
 <para>
 More concretely,
 the values on the stack are paired to the right of the environment.
-So when designing operators like <literal>handleA</literal> that pass
-extra inputs to their subcommands,
+So operators like <function>handleA</function> that pass
+extra inputs to their subcommands can be designed for use with the notation
+by pairing the values with the environment in this way.
 More precisely, the type of each argument of the operator (and its result)
 should have the form
 <screen>
 More precisely, the type of each argument of the operator (and its result)
 should have the form
 <screen>
@@ -3862,7 +3863,7 @@ proc x -> do
         (|runReader (do { ... })|) s
 </screen>
 which adds <literal>s</literal> to the stack of inputs to the command
         (|runReader (do { ... })|) s
 </screen>
 which adds <literal>s</literal> to the stack of inputs to the command
-built using <literal>runReader</literal>.
+built using <function>runReader</function>.
 </para>
 
 <para>
 </para>
 
 <para>
@@ -3880,7 +3881,7 @@ u `bind` f = returnA &amp;&amp;&amp; u >>> f
 bind_ :: Arrow a => a e b -> a e c -> a e c
 u `bind_` f = u `bind` (arr fst >>> f)
 </programlisting>
 bind_ :: Arrow a => a e b -> a e c -> a e c
 u `bind_` f = u `bind` (arr fst >>> f)
 </programlisting>
-We could simulate <literal>do</literal> by defining
+We could simulate <literal>if</literal> by defining
 <programlisting>
 cond :: ArrowChoice a => a e b -> a e b -> a (e,Bool) b
 cond f g = arr (\ (e,b) -> if b then Left e else Right e) >>> f ||| g
 <programlisting>
 cond :: ArrowChoice a => a e b -> a e b -> a (e,Bool) b
 cond f g = arr (\ (e,b) -> if b then Left e else Right e) >>> f ||| g
@@ -3931,7 +3932,7 @@ additional restrictions:
 <listitem>
 <para>
 The module must import
 <listitem>
 <para>
 The module must import
-<ulink url="../base/Control.Arrow.html"><literal>Control.Arrow</literal></ulink>.
+<ulink url="../libraries/base/Control.Arrow.html"><literal>Control.Arrow</literal></ulink>.
 </para>
 </listitem>
 
 </para>
 </listitem>