It would be nice to get the gradient respect to a parameter. Maybe something like ```rust pub trait ParameterGradient { type Param; fn g(&self, param: Param) -> f64; } ```