[Haskell-beginners] Map on Nested Lists

Thomas Davie tom.davie at gmail.com
Thu Apr 8 09:37:28 EDT 2010


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 <ben.derrett at googlemail.com> 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 at mit.edu
> 
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
> 
> 
> 
> 
> -- 
> mac
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20100408/17fd1e11/attachment-0001.html


More information about the Beginners mailing list