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]