Specification of newtype deriving
Simon Peyton-Jones
simonpj at microsoft.com
Mon Apr 3 07:15:58 EDT 2006
| By the way, the description in the GHC User's Guide 7.4.12.2:
|
| newtype T v1...vn = T' (S t1...tk vk+1...vn) deriving (c1...cm)
|
| is too restrictive in requiring that S must be a type constructor of
| the same arity as T, forbidding things like
|
| newtype Wrap m a = Wrap (m a) deriving (Monad, Eq)
|
| It should be
|
| newtype T v1...vn = T' (t vk+1...vn) deriving (c1...cm)
|
| with vk+1...vn not free in the type expression t. It should also
| mention that T may not be recursive, unless all the classes are
| those derivable by the existing mechanism. (There is some
| awkwardness in the overlap between the two mechanisms.)
Good point. It turned out that the HEAD already implemented this, but
because I hadn't thought of this case, I'd missed a test in the eta-ok
test. So there was a lurking bug.
I've fixed the documentation as you suggest too.
Thanks for pointing this out
Simon
More information about the Haskell-prime
mailing list