X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fglasgow_exts.xml;h=dfedb083b537dd66f0e0e6d8736f6201f4a0f74b;hb=a8e681c1e8aa4bc602714ff61583cd4e969d7187;hp=fb2124e7fb95cb5b15f708f2f2c00e0ccef276ec;hpb=2c953bfaae37b427b71cbe20f0ceeda4c1d6f00f;p=ghc-hetmet.git diff --git a/docs/users_guide/glasgow_exts.xml b/docs/users_guide/glasgow_exts.xml index fb2124e..dfedb08 100644 --- a/docs/users_guide/glasgow_exts.xml +++ b/docs/users_guide/glasgow_exts.xml @@ -964,7 +964,7 @@ a data type with no constructors. For example: Syntactically, the declaration lacks the "= constrs" part. The type can be parameterised over types of any kind, but if the kind is not * then an explicit kind annotation must be used -(see ). +(see ). Such data types have only one value, namely bottom. Nevertheless, they can be useful when defining "phantom types". @@ -1226,7 +1226,7 @@ that collection of packages in a uniform manner. You can express quite a bit of object-oriented-like programming this way. - + Why existential? @@ -1249,9 +1249,9 @@ But Haskell programmers can safely think of the ordinary adding a new existential quantification construct. - + - + Type classes @@ -1311,9 +1311,9 @@ Notice the way that the syntax fits smoothly with that used for universal quantification earlier. - + - + Record Constructors @@ -1376,10 +1376,10 @@ setTag obj t = obj{ tag = t } - + - + Restrictions @@ -1530,7 +1530,7 @@ declarations. Define your own instances! - + @@ -3372,7 +3372,7 @@ and you'd be right. That is why they are an experimental feature. ================ END OF Linear Implicit Parameters commented out --> - + Explicitly-kinded quantification @@ -3492,7 +3492,6 @@ including an operational type class context, is legal: On the left or right (see f4, for example) of a function arrow - On the right of a function arrow (see ) As the argument of a constructor, or type of a field, in a data type declaration. For example, any of the f1,f2,f3,g1,g2 above would be valid field type signatures. @@ -4227,8 +4226,8 @@ Tim Sheard is going to expand it.) - Furthermore, the you can only run a function at compile time if it is imported - from another module that is not part of a mutually-recursive group of modules + Furthermore, you can only run a function at compile time if it is imported + from another module that is not part of a mutually-recursive group of modules that includes the module currently being compiled. For example, when compiling module A, you can only run Template Haskell functions imported from B if B does not import A (directly or indirectly). The reason should be clear: to run B we must compile and run A, but we are currently type-checking A. @@ -4853,7 +4852,7 @@ Because the preprocessor targets Haskell (rather than Core), - + Bang patterns <indexterm><primary>Bang patterns</primary></indexterm> @@ -4868,7 +4867,7 @@ than the material below. Bang patterns are enabled by the flag . - + Informal description of bang patterns @@ -4923,7 +4922,7 @@ is part of the syntax of let bindings. - + Syntax and semantics @@ -4997,7 +4996,7 @@ a module. - + Assertions <indexterm><primary>Assertions</primary></indexterm>