Hi,
I can understand why principle type of map is
map :: (a -> b) -> [a] -> [b] ,
I would interpret this as "map takes a function of type a->b and a list of type [a] as arguments and returns a list of type [b]"
but it is going somewhat beyond my imagination why principle type of map map is
(map map)::[a -> b] -> [[a] -> [b]]
I am able to interpret the expressions "[a -> b] -> [[a] -> [b]]" vaguely...
does this mean that 'map map' takes list of functions of type (a->b) and returns list of functions of type ([a]->[b])
if yes ..how do I derive it from basic type declaration of map?
Thanks in advance
Vikrant