You can also do this with default arguments, e.g. like so:
let f x y =
let g (a = x+1) b = ...
...
For example the following is valid OCaml: let bump ?(step = 1) x =
let waa ?( a = step+17 ) b = a * b in
x + step + waa 666;;
Here the function waa has a default argument whose default argument depends on bump's default argument.> recursive/derived implicits
Recursion is quite restricted, for example this is not valid Scala:
def f ( x : Int ) ( implicit y : Int ) : Int = {
implicit val a = 17
f ( x+1 ) }