| Just before Section D.1 there is the sentence
| 
| When inferring the context for the derived instances, type 
| synonyms must be expanded out first. 
| 
| I don't understand it. Which type synonyms need expansion? 

Consider
        type Foo a = [a]
        data T a = MkT (Foo a) deriving( Eq )

Then we must expand the Foo synonym when inferring the
context of the derived instance decl

        instance Eq a => Eq (T a) where ...

I've tried to clarify this by saying instead:
"When inferring the context for the derived instances, type synonyms
in the constructors' argument types must be expanded out first."

| Free names in the declarations d are all defined in the 
| Prelude; the qualifier `Prelude.' is implicit here.
| 
| Well, `Prelude' does not necessarily refer to the builtin 
| prelude. I suppose the sentence should actually be the same 
| as the statement at the beginning of Chapter 3 (Expressions).

Good idea. I'll do that.

| Naturally this makes clear that it is actually impossible to 
| correctly build a tool like DrIft. There is no safe way in 
| Haskell to refer to the builtin prelude...

I guess you could say
        import Prelude as DriftPrelude

and then use DriftPrelude.wuggle

Of course, the programmer might be using DriftPrelude, but that would
be surprising.

Simon

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to