
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