try implementing symbolic differentiation in a language like haskell or egison, and then again in a language like python or js, and your perspective on what is 'easy to understand and debug' is very likely to change
Do you have an example of such an implementation in haskell?
googling i found https://gist.github.com/amalex5/541dc739201bbd8e26037b6738cd... although it's missing the type declaration
http://5outh.blogspot.com/2013/05/symbolic-calculus-in-haske... is more complete and also includes an explanation and a bunch of simplifications you'd also want along with it
The older I get the more I value code that is easy to understand and debug by either myself or someone else months or years down the line when the original context might be forgotten. Ultra-dense syntax like this only makes that almost superhumanly difficult.