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 <capn.freako@gmail.com>:
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