Graham Klyne wrote: > > I'm trying to figure if there's any way I can use (say) monads to collect > values from a Functor. > > For example, suppose I have a tree of some values that supports fmap, is > there any way I can use the fmap function to collect a list of all the node > values?
Rather than using fmap, why not use gmap in GHC. Using an appropriate generic traversal scheme, say listify, all the code you write is the following expression: listify (const True) mytree :: [Int] if you are looking for all the Ints in mytree = Fork (Leaf 42) (Fork (Leaf 88) (Leaf 37)) So this would give you [42,88,37]. (So you do not need to force your datatypes to become functors, neither do you write Functor instances.) I added this example to the boilerplate page. http://www.cs.vu.nl/boilerplate/ Ralf -- Ralf Laemmel VU & CWI, Amsterdam, The Netherlands http://www.cs.vu.nl/~ralf/ http://www.cwi.nl/~ralf/ _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell