Phil writes:
>       GLOBAL INSTANCE PROPERTY: if an instance exists of a given
>       class at a given type, this instance is in scope everywhere
>       that the class and type are in scope.
> 
> If this was not the case, then the point at which overloading was
> resolved (definition point or usage point) might change the meaning of
> the program.   In my opinion, that would be a real disaster: adding
> extra type declarations to a program could suddenly change its
> meaning.

In general I agree with this principle, but there are occasions where
it forces you to break the abstraction barriers.  I never thought
about this until I started to write larger Haskell programs.  The
current module system can be a real pain when trying to maintain
barriers (as Will observed).  The GIP is just a part of the whole mess :-)

        -- Lennart

PS.  If someone really wants an example of when the GIP hurt
me I could elaborate.

Reply via email to