Robert Ennals <[EMAIL PROTECTED]> writes:
[Heavy snippage, hopefully preserving semantics]
> data Foo = Foo {wibble :: Int, wobble :: String}
> deriving Wibble
> We could imagine the definition of Foo being automatically desugared to the
> following:
> data Foo = Foo Int String
> instance Wibble Foo where
> wibble (x,_) = x
> wobbble (_,y) = y
> set_wibble x (_,y) = (x,y)
> set_wobble y (x,_) = (x,y)
Shouldn't that rather be:
class HasWibble a where
wibble :: a -> Int
set_wibble :: a -> Int -> a
class HasWobble a where ...
data Foo = Foo Int String
instance HasWibble Foo where
wibble (Foo x _) = x
set_wibble (Foo x y) z = Foo z y
instance HasWobble Fo where...
In order to let another record provide just a 'wibble' without a
'wobble'?
One danger of such an approach (implicit classes and instances) might
be non-intuitive error messages.
-kzm
--
If I haven't seen further, it is by standing in the footprints of giants
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell