In Moss, currying is stright forward. Simply change

```
diffh = |h,f,x| (f(x+h)-f(x-h))/(2*h)
```

into

```
diffh = |h| |f| |x| (f(x+h)-f(x-h))/(2*h)
```

That’s boring, of course. Let’s state the directional derivative:

```
diffh = |h| |v| |f| |x| (f(x+h*v)-f(x-h*v))/(2*h)
```

Usage examples you will find here: moss/doc/examples/differential-geometry.

How am I supposed to do this in Rust? It seems we are forced to box the inner closure:

```
type RtoR = Box<dyn Fn(f64)->f64>;
fn diffh(h: f64) -> impl Fn(RtoR) -> RtoR {
return move |f: RtoR| -> RtoR {
return Box::new(move |x| (f(x+h)-f(x-h))/(2.0*h));
}
}
fn main(){
let diff = diffh(0.0001);
let f = diff(Box::new(|x| x.ln()));
println!("{}",f(1.0));
}
```

Is it possible to reformulate `diffh`

without `dyn`

? Changing `h`

into a type level constant is assumed to be bogus trait magic.