
You're right, if you implement the type class independent of the value
you'll end up with associating names with types.
I use it as an interface to your method actually - sorry I didn't make it
clear enough.
So, something like this:
data NamedInt = NamedInt Int String
instance HasName NamedInt where
name (NamedInt _ n) = n
updateName n (NamedInt v _) = NamedInt v n
Now, if you want, you can have a Num instance for Named Int, redirect
everything to the inner-int, and here you go. You can use NamedInt as a Num
seamlessly.
Cheers,
On 20 March 2010 11:03, Stephen Tetley
Hi Ozgur
Doesn't that associate names with types rather than names with values though:
instance HasName Int where name = "Int"
printWithName (1::Int) Int: 1
printWithName (70::Int) Int: 70
I think the same is achievable with Data.Typeable / Data.Data although how to do it is somewhat buried...
For associating names and values you'd still need to do it 'by hand' with something like
data Named a = Named String a deriving (Show)
or
type Named a = (String,a)
Best wishes
Stephen _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
-- Ozgur Akgun