2014-05-07 6 views
0

J'ai deux fonctions:Comment appeler 2 fonctions récursivement?

let fn2 = 
    if "something happend" then 
    fn1 

let rec fn1 = 
    if "something" then 
    fn2 

Ceci est juste un exemple, ce que je suis en train de faire. Y at-il une idée comment le faire?

ou devrais-je envoyer la 2. fonction à la fonction en tant que paramètre 1.?

Répondre

6

Vous devez utiliser let rec ... and ...:

let rec fn1 x = 
    if x = "something" then 
     fn2 x 
and fn2 x = 
    if x = "something else" then 
     fn1 x 
+0

wow, je ne savais pas, je vous remercie KVB – Racooon

0

Vous pouvez également imbriquer wrap vos fonctions et de créer deux fonctions d'ordre-supérieur qui prennent une fonction comme argument et l'appliquer.

Cela pourrait être plus que sth. comme:

let fn2 fn = 
    if "something happend" then 
    fn fn2 

let rec fn1 fn = 
    if "something" then 
    fn fn1 

Vous pouvez appeler que appeler votre fonction comme ceci:

let result = fn1 fn2

Si vous voulez que votre fonction soit plus explicite votre peut écrire par exemple comme:

let rec fn2 (fn:unit->unit) : unit = 
    if "something happend" then 
    fn fn2 

let rec fn1 (fn:unit->unit) : unit = 
    if "something" then 
    fn fn1 

Mais je pense que la réponse est qu'ils KVB meilleure façon d'aller car il est plus standard conforme et lisible.

Questions connexes