
You can't write a single such function to operate on all the different types, but you can use Conal's semantic editor combinators. In the case of something to map onto the elements of a list of lists, you'd want (map . map), or (fmap . fmap) to generalise things slightly. In the case of lists of lists of lists, you need (fmap . fmap . fmap). Note that you can generalise this to for example applying to the elements of lists which are embedded in the first element of a tuple: first . fmap. Or a list of Maybe tuples containing lists in their second element: fmap . fmap . fmap . fmap Bob On 8 Apr 2010, at 14:16, matthew coolbeth wrote:
I'm a beginner too but, if I am not wrong, then you will not be able to write a function that can receive input of type [[a]] as well as input of type [[[a]]].
Is that the behaviour that you have in mind?
On Thu, Apr 8, 2010 at 09:08, Ben Derrett
wrote: Hi, I'm trying to write a generalization of the map function that operates on nested lists, e.g. [[a]] or [[[a]]]. (It should map all elements of type a (not list) with f) I was thinking of something along these lines: mapN f *list of type [a] (where a is not a list type)* = map f l mapN f l = (mapN f (head l)):(mapN f (tail l))
Any suggestions about how to go about this?
Many thanks,
Ben
-- Ben Derrett Department of Mathematics MIT Class of 2012 bderrett@mit.edu
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
-- mac _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners