Не уверен, что я понимаю вашу домашнюю работу - вы уверены, что просто не хотите звонить f (n) вместо того, чтобы вернуть ее?
Но, некоторые примеры - функция, которая возвращает другую функцию
(* given a number, return a function that takes an int
and returns integer + number *)
let adder n =
let f x = n+x in
f
Обратите внимание, что тип, который он возвращает, является функцией:
# adder 10;;
- : int -> int = <fun>
# let g = adder 10;;
val g : int -> int = <fun>
# g 20;;
- : int = 30
По сути, чтобы вернуть функцию, вы определяете функцию и просто возвращаете ее.
Допустим, вы хотите взять функцию и вернуть функцию, которая возвращает двойное значение:
let doubler f =
let g x = 2 * (f x) in
g
# let f x = x + 1;;
val f : int -> int = <fun>
# let g = doubler f;;
val g : int -> int = <fun>
# g 10;;
- : int = 22