Каковы побочные эффекты производительности при определении функций внутри рекурсивной функции и снаружи в F#

Если у вас есть рекурсивная функция, которая полагается на какую-то другую функцию, какой способ реализации предпочтителен?

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) что-то еще лучше?

6
задан Jeff Windsor 27 October 2011 в 18:00
поделиться