Haskell 98 report; D Specification of Derived Instances
Olaf Chitil
olaf@cs.york.ac.uk
Mon, 28 Jan 2002 18:12:05 +0000
> 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? All the u_n
> are type variables.
I worked it out. Given
data cx => T u1 ... uk = K1 t11 ... t1k1 | ...| Kn tn1 ... tnkn deriving
C
one constructs
instance cx' => C (T u1 ... uk) where ...
cx' is obtained by reducing the context
(cx, C t11, ..., C t1k1, ..., C tn1,... ,C tnkn)
Basically this is standard context reduction as performed by type
inference, except that in the process the need to reduce the context C
(T a1 ... ak) may arise. I assume that the least solution of all
possible solutions is used. Can anybody suggest a simple way for
computing this least fixpoint? nhc98 doesn't determine the least
fixpoint whereas ghc and hbc seem to do so.
This is way more complicated then I thought and doesn't encourage me to
implement it. Naturally all this is pure guesswork, because the Haskell
98 report doesn't explain anything of this...
Olaf
--
OLAF CHITIL,
Dept. of Computer Science, The University of York, York YO10 5DD, UK.
URL: http://www.cs.york.ac.uk/~olaf/
Tel: +44 1904 434756; Fax: +44 1904 432767