On Wed, 10 Sep 2003 10:26:04 +0100, Robert Ennals <[EMAIL PROTECTED]> wrote:
>class Wibble a where > wibble :: a -> Int > wobble :: a -> String > set_wibble :: Int -> a -> a > set_wobble :: String -> a -> a > > >data Foo = Foo {wibble :: Int, wobble :: String} > deriving Wibble > > >The Wibble class defines selector and updater functions for fields called >wibble and wobble. > >When I define the datatype Foo, I give it fields called wibble and wobble, >which will define the functions in Wibble. If I say "deriving Wibble" then the >type system acknowledges that these functions are implementing the class >Wibble. If I had not derived Wibble then there would have been a name clash. What would you do if Wibble had more functions than just those 4? You'd need somewhere to put the implementations of the other functions for Foo. Ganesh _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell