# Derivatives of list elements

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?)

-
What version are you running? I cannot reproduce your final result on v9.0.1. – rcollyer Apr 29 '13 at 20:53
I'm running 8.0.1.0. Could it be a bug that's been corrected? – Ted Pudlik Apr 29 '13 at 20:57
Quite possibly. I can reproduce it on v8.0.1, and v8.0.4, but not on v9.0.0, or higher. So, retagging. I'll let someone else add bugs. – rcollyer Apr 29 '13 at 20:59
@rcollyer Reproduced here too. Tagged. – Dr. belisarius Apr 29 '13 at 21:48
I updated to v9.0.1 and get the expected result now. Thanks for your help! – Ted Pudlik Apr 29 '13 at 22:01

## 1 Answer

As indicated in the comments, this has been fixed as of version 9.0.0.

lst = {{a1, a2}, {b1, b2}, {c1, c2}};
Derivative[1][lst[[1]] + #*(lst[[2]] - lst[[3]]) &]

(* lst[[2]] - lst[[3]] & *)

-
This is perhaps something to look at? At least the non-working example should be removed from the documentation. – Szabolcs Aug 9 '15 at 9:29
@Szabolcs Agreed, in fact there are several open bug reports for that issue, and I've updated them to link to the MSE discussion. Personally I'd prefer it to work as it used to (long ago), but updating the documentation may be more realistic at this point. – ilian Aug 9 '15 at 16:15