Rearranging function in 'Theorems for free'
It can, as good evidence for it define m as something like

m f = map f . drop 2


And everything still typechecks. Here "rearranging" is supposed to refer to structural operation on the list without regards to the specific values of each element. This is captured by the free theorem at this type,

m (\x -&gt; x) . map f = map f . m (\x -&gt; x)


m (\x -&gt; x) performs all the structural changes to the list and map f actually alters this element. This theorem implies that they are independent of each other.