summaryrefslogtreecommitdiff
path: root/doc/tutorial
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tutorial')
-rw-r--r--doc/tutorial/gf-tutorial2.txt30
1 files changed, 30 insertions, 0 deletions
diff --git a/doc/tutorial/gf-tutorial2.txt b/doc/tutorial/gf-tutorial2.txt
index 0d530c22a..9ba3a9619 100644
--- a/doc/tutorial/gf-tutorial2.txt
+++ b/doc/tutorial/gf-tutorial2.txt
@@ -1704,6 +1704,36 @@ Product types and tuples are syntactic sugar for record types and records:
Thus the labels ``p1, p2,...``` are hard-coded.
+===Record and tuple patterns===
+
+Record types of parameter types are also parameter types.
+A typical example is a record of agreement features, e.g. French
+```
+ oper Agr : PType = {g : Gender ; n : Number ; p : Person} ;
+```
+Notice the term ``PType`` rather than just ``Type`` referring to
+parameter types. Every ``PType`` is also a ``Type``.
+
+Pattern matching is done in the expected way, but it can moreover
+utilize partial records: the branch
+```
+ {g = Fem} => t
+```
+in a table of type ``Agr => T`` means the same as
+```
+ {g = Fem ; n = _ ; p = _} => t
+```
+Tuple patterns are translated to record patterns in the
+same way as tuples to records; partial patterns make it
+possible to write, slightly surprisingly,
+```
+ case <g,n,p> of {
+ <Fem> => t
+ ...
+ }
+```
+
+
%--!
===Prefix-dependent choices===