I'd agree with Julian Birch, except to say that you shouldn't make a typeclass unless overloading is really needed and you can define laws on the behavior thereof.
A fairly major (IMO) inconvenience with embedding functions in records that have non-function data they operate on is that you won't have a Show instance. Also, you'll be forced to extract the method and then apply it. In doing so, to make things nicer you'll probably pull out an "extract and apply" function. At that point, you're better off lifting the varying implementations into top-level functions and making a wrapper that decides which runs where based on the *data* in the record.
That is, including enough information in the record to decide which function applied.
And this is without having broached whether or not you plan to be able to serialize your data or not.