The Automatic Differentiation package in Haskell can do some interesting things.

Prelude Numeric.AD> jacobian ([x, y] -> [x*x*y, 5*x + sin y]) [1, 1]
[[2.0,1.0],[5.0,0.5403023058681398]]