X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fglasgow_exts.xml;h=a8c91dff8f31d55f6e5281e7f016a108ce0b49fc;hb=8ebe3082e1194867ccb46656c647d5d167e00502;hp=0c3b07cb6c50d9e3bda756061f9b75083a8cc85a;hpb=f94f26a7cb7bb7005b88f50c4383a761fc18718d;p=ghc-hetmet.git
diff --git a/docs/users_guide/glasgow_exts.xml b/docs/users_guide/glasgow_exts.xml
index 0c3b07c..a8c91df 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.
@@ -4087,15 +4086,39 @@ The class IsString is defined as:
class IsString a where
fromString :: String -> a
-And the only predefined instance is the obvious one to make strings work as usual:
+The only predefined instance is the obvious one to make strings work as usual:
instance IsString [Char] where
fromString cs = cs
+The class IsString is not in scope by default. If you want to mention
+it explicitly (for exmaple, to give an instance declaration for it), you can import it
+from module GHC.Exts.
+
+
+Haskell's defaulting mechanism is extended to cover string literals, when is specified.
+Specifically:
+
+
+Each type in a default declaration must be an
+instance of Numor of IsString.
+
+
+
+The standard defaulting rule (Haskell Report, Section 4.3.4)
+is extended thus: defaulting applies when all the unresolved constraints involve standard classes
+orIsString; and at least one is a numeric class
+orIsString.
+
+
A small example:
+module Main where
+
+import GHC.Exts( IsString(..) )
+
newtype MyString = MyString String deriving (Eq, Show)
instance IsString MyString where
fromString = MyString
@@ -4226,6 +4249,14 @@ Tim Sheard is going to expand it.)
(It would make sense to do so, but it's hard to implement.)
+
+ 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.
+
+
The flag -ddump-splices shows the expansion of all top-level splices as they happen.
@@ -4845,7 +4876,7 @@ Because the preprocessor targets Haskell (rather than Core),
-
+Bang patterns
Bang patterns
@@ -4860,7 +4891,7 @@ than the material below.
Bang patterns are enabled by the flag .
-
+Informal description of bang patterns
@@ -4915,7 +4946,7 @@ is part of the syntax of let bindings.
-
+Syntax and semantics
@@ -4989,7 +5020,7 @@ a module.
-
+Assertions
Assertions