From 3c45e7c9055aca5bf525c9bfe63e934ca1eca150 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 11 Apr 2005 15:03:03 +0000 Subject: [PATCH] corrected gf-modules --- doc/gf-modules.html | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/doc/gf-modules.html b/doc/gf-modules.html index 51aff0685..5d3103d40 100644 --- a/doc/gf-modules.html +++ b/doc/gf-modules.html @@ -407,21 +407,21 @@ from firm principles. The typical use is through open in a concrete module, which means that resource modules are not imported on their own. -However, when developing and testing phase of grammars, it +However, in the developing and testing phase of grammars, it can be useful to evaluate opers with different -arguments. To prevent them from being inlined away, the +arguments. To prevent them from being thrown away after inlining, the -retain option can be used:
   > i -retain Util.gf
 
The command compute_concrete (cc) -can now be used for evaluating expressions that may concain +can now be used for evaluating expressions that may contain operations defined in Util:
   > cc ss (paren "foo")
   {s = "(" ++ "foo" ++ ")"}
 
-To find out, what opers are available for a given type, +To find out what opers are available for a given type, the command show_operations (so) can be used:
   > so SS
@@ -447,7 +447,7 @@ languages.
 
 

-In addition to its special modularity, GF provides inheritance, +In addition to this special kind of modularity, GF provides inheritance, which is familiar from other programming languages (in particular, object-oriented ones). Inheritance means that a module inherits all judgements from another module; we also say that it extends @@ -524,8 +524,7 @@ Instead, an indirection is created for each inherited name, as can be seen by looking into the generated gfc (and gfr) files. Thus for instance the names

-  Mathematics.Prop  Arithmetic.Prop  Logic.Prop
-                    Geometry.Prop 
+  Mathematics.Prop  Arithmetic.Prop  Geometry.Prop Logic.Prop
 
all refer to the same category, declared in the module Logic. @@ -591,11 +590,11 @@ the same linearization type, the actual translation used in GF adds to every linearization type and linearization a lock field,
-  cat C ;               ===>  oper C : Type = T ** {lock_C : {}} ;
+  cat C ;                    ===>  oper C : Type = T ** {lock_C : {}} ;
   lincat C = T ;
 
-  fun f : ... -> C ;    ===>  oper f : A = t ** {lock_C = <>};
-  lin f = t ;
+  fun f : C_1 ... C_n -> C ; ===>  oper f : A = \x_1,...,x_n -> 
+  lin f = t ;                        t x_1 ... x_n ** {lock_C = <>};
 
(Notice that the latter translation is type-correct because of record subtyping, which means that t can ignore the @@ -666,10 +665,10 @@ a concrete using the same syntax as when opening a resource. For an instance, the semantics is the same as when opening the definitions together with the type signatures - one can think of an interface -and an instance of it forming an ordinary +and an instance of it together forming an ordinary resource. Opening an interface, however, is different: functions that are only declared without -having a definition cannot be compiled (inlined), and nor +having a definition cannot be compiled (inlined); neither can functions whose definitions depend on undefined functions.

@@ -689,7 +688,8 @@ uses the interface Markup to place markup in chosen places in its linearization rules, but the implementation of markup - whether in HTML or in LaTeX - is left unspecified. This is a powerful way of sharing -the code of a whole module. +the code of a whole module with just differences in +the definitions of some constants.

@@ -735,7 +735,7 @@ not be completions). But it cannot add new judgements. Interfaces, instances, and parametric modules are purely a front-end feature of GF: these module types do not exist in the gfc and gfr formats. The compiler has -nevertheless keep track of their dependencies and modification +nevertheless to keep track of their dependencies and modification times. Here is a summary of how they are compiled: