Several days ago I suggested the guess how the existing 
implementions handle the overlapping instances.
And the example was considered, with the modules F,G,E.

>> [..]
>> module G (g)
>> where
>> g :: Eq a => (a -> Bool) -> [a] -> [Bool]
>> g            h              xs  =  map h xs
>> [..]

Jeffrey R. Lewis  <[EMAIL PROTECTED]>  noted that  `Eq a =>'  
is unnecessary.

> That fact that some argument passed to `g' might use equality 
> doesn't matter, because that is dealt with at the calling site.

Thank you. 
This typo has some historic origin.
Let us  omit  `Eq a =>',  just not to lead beginner readers to the 
wrong programming style.
So, it should be          g :: (a -> Bool) -> [a] -> [Bool]
                          g    h              xs  =  map h xs

The whole example remains correct, I believe.

------------------
Sergey Mechveliani
[EMAIL PROTECTED]






Reply via email to