Given the following two function definitions:<br><br>let func4 l = map (\y -&gt; y+2) (filter (\z -&gt; z `elem` [1..10]) (5:l))<br>let func4_pf = map (+2) . filter (`elem` [1..10]) . (5 :)<br><br>which are equivalent, why does the first one have a type of <br>
<br>func4 :: (Num a, Enum a) =&gt; [a] -&gt; [a]<br><br>while the second one has a type of<br><br>func4_pf :: [Integer] -&gt; [Integer]<br><br>Shouldn&#39;t the types be the same?<br>