How can I return a recursive function in ML?
As far as I know recursive anonymous functions cannot be returned and only anonymous functions can be used as returning value(if the returning value is function...).
How can I return a recursive function in ML?
As far as I know recursive anonymous functions cannot be returned and only anonymous functions can be used as returning value(if the returning value is function...).
Would this be the kind of example you are wondering about?
fun f n =
let
fun g k =
if k = n then [] else k :: g (k-1)
in
g
end
You can only make a recursive definition by naming it, but that's not a problem, because you can write a let expression anywhere.
Update to answer comment more specifically:
fun f g =
let
fun h 0 = g 0
| h i = h (i-1) + g i
in
h
end
(A more efficient implementation would make h tail-recursive.)