Re: [Haskell-cafe] Default implementation of type class member function not working as expected.

That worked, Brandon; thanks! Gurus, I’d still love to understand exactly what I broke, trying to do it the other way. Any thoughts? Thanks, -db On May 21, 2014, at 12:14 AM, haskell-cafe-request@haskell.org wrote:
if there's only one definition, then define it *outside* the typeclass.
I have a typeclass, which defines the following two member functions: (t is a Rose Tree.)
getCompNodes :: t -> [CompNode a]
getAllCompNodes :: t -> [CompNode a] getAllCompNodes t = getCompNodes t ++ (concatMap getAllCompNodes (subForest t))
The first one must be defined uniquely by each instance, but the second never needs a unique definition. So, I provided its implementation in the typeclass definition, as shown.

On Wed, May 21, 2014 at 8:12 PM, David Banas
Gurus, I’d still love to understand exactly what I broke, trying to do it the other way. Any thoughts?
Provide more information. If you re-read what you sent to the list, you'll find there's nothing to go by. Things you need to provide: * actual error messages * the client code using the type classes * best of all, minimized but fully compilable code exhibiting the problem -- Kim-Ee

Are you trying to do something like that?
data Rose a = Rose a [Rose a]
class TreeLike t where
getNodes :: t a -> [t a]
getAllNodes :: t a -> [t a]
getAllNodes t = getNodes t ++ (concatMap getAllNodes (getNodes t))
instance TreeLike Rose where
getNodes (Rose _ xs) = xs
-Sylvain
2014-05-21 15:12 GMT+02:00 David Banas
That worked, Brandon; thanks!
Gurus, I’d still love to understand exactly what I broke, trying to do it the other way. Any thoughts?
Thanks, -db
On May 21, 2014, at 12:14 AM, haskell-cafe-request@haskell.org wrote:
if there's only one definition, then define it *outside* the typeclass.
I have a typeclass, which defines the following two member functions: (t is a Rose Tree.)
getCompNodes :: t -> [CompNode a]
getAllCompNodes :: t -> [CompNode a] getAllCompNodes t = getCompNodes t ++ (concatMap getAllCompNodes (subForest t))
The first one must be defined uniquely by each instance, but the second never needs a unique definition. So, I provided its implementation in the typeclass definition, as shown.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (3)
-
David Banas
-
Kim-Ee Yeoh
-
Sylvain Henry