Bug introduced in 8.0.0 and fixed in 9.0.0
Could someone explain the odd behavior of the Derivative function when drawing arguments from lists? We have,
Derivative[1][a + #*(b - c) &]
(* b - c & *)
and analogously,
Derivative[1][{a1, a2} + #*({b1, b2} - {c1, c2}) &]
(* {0, 0} + {b1, b2} - {c1, c2} + ({0, 0} + {0, 0}) #1 & *)
So far so good. However,
lst = {{a1, a2}, {b1, b2}, {c1, c2}};
Derivative[1][lst[[1]] + #*(lst[[2]] - lst[[3]]) &]
(* {lst[[2]] - lst[[3]], lst[[2]] - lst[[3]]} & *)
Why is the output in the last case not,
lst[[2]] - lst[[3]] &
as one would expect based on the previous examples? Why do I get a list of lists as an answer, instead of just a list? (And what should I do to get the expected result?)