Если у вас есть рекурсивная функция, которая полагается на какую-то другую функцию, какой способ реализации предпочтителен?
1) вне рекурсивной функции
let doSomething n = ...
let rec doSomethingElse x =
match x with
| yourDone -> ...
| yourNotDone -> doSomethingElse (doSomething x)
2) внутри рекурсивной функции
let rec doSomethingElse x =
let doSomething n = ...
match x with
| yourDone -> ...
| yourNotDone -> doSomethingElse (doSomething x)
3) инкапсулировать обе функции в третью функцию
let doSomethingElse x =
let doSomething n = ...
let innerDoSomethingElse =
match x with
| yourDone -> ...
| yourNotDone -> innerDoSomethingElse (doSomething x)
4) что-то еще лучше?