
14 Mar
2007
14 Mar
'07
12:01 p.m.
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