[commit: ghc] wip/pattern-synonyms: Add user documentation for explicitly-bidirectional pattern synonyms (9b39096)

git at git.haskell.org git at git.haskell.org
Tue Jul 29 09:34:06 UTC 2014


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

On branch  : wip/pattern-synonyms
Link       : http://ghc.haskell.org/trac/ghc/changeset/9b390965c432faf0cc9aba3a14e1be3bee37e73b/ghc

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

commit 9b390965c432faf0cc9aba3a14e1be3bee37e73b
Author: Dr. ERDI Gergo <gergo at erdi.hu>
Date:   Tue Jul 29 11:33:57 2014 +0200

    Add user documentation for explicitly-bidirectional pattern synonyms


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

9b390965c432faf0cc9aba3a14e1be3bee37e73b
 docs/users_guide/glasgow_exts.xml | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/docs/users_guide/glasgow_exts.xml b/docs/users_guide/glasgow_exts.xml
index f1d7b94..123ab53 100644
--- a/docs/users_guide/glasgow_exts.xml
+++ b/docs/users_guide/glasgow_exts.xml
@@ -987,9 +987,15 @@ Which enables us to rewrite our functions in a much cleaner style:
 In this case, <literal>Head</literal> <replaceable>x</replaceable>
 cannot be used in expressions, only patterns, since it wouldn't
 specify a value for the <replaceable>xs</replaceable> on the
-right-hand side.
+right-hand side. We can give an explicit inversion of a pattern
+synonym using the following syntax:
 </para>
 
+<programlisting>
+  pattern Head x <- x:xs where
+    Head x = [x]
+</programlisting>
+
 <para>
 The syntax and semantics of pattern synonyms are elaborated in the
 following subsections.  
@@ -1008,6 +1014,10 @@ bidirectional. The syntax for unidirectional pattern synonyms is:
   and the syntax for bidirectional pattern synonyms is:
 <programlisting>
   pattern Name args = pat
+</programlisting> or
+<programlisting>
+  pattern Name args <- pat where
+    Name args = expr
 </programlisting>
   Either prefix or infix syntax can be
   used.
@@ -1020,11 +1030,12 @@ bidirectional. The syntax for unidirectional pattern synonyms is:
 </para>
 <para>
   The variables in the left-hand side of the definition are bound by
-  the pattern on the right-hand side. For bidirectional pattern
-  synonyms, all the variables of the right-hand side must also occur
-  on the left-hand side; also, wildcard patterns and view patterns are
-  not allowed. For unidirectional pattern synonyms, there is no
-  restriction on the right-hand side pattern.
+  the pattern on the right-hand side. For implicitly bidirectional
+  pattern synonyms, all the variables of the right-hand side must also
+  occur on the left-hand side; also, wildcard patterns and view
+  patterns are not allowed. For unidirectional and
+  explicitly-bidirectional pattern synonyms, there is no restriction
+  on the right-hand side pattern.
 </para>
 
 <para>



More information about the ghc-commits mailing list