Prenez ce code par exemple (l'ignorer étant horriblement inefficace pour le moment)lambdas récursives en F #
let listToString (lst:list<'a>) = ;;' prettify fix
let rec inner (lst:list<'a>) buffer = ;;' prettify fix
match List.length lst with
| 0 -> buffer
| _ -> inner (List.tl lst) (buffer + ((List.hd lst).ToString()))
inner lst ""
Ceci est un modèle commun que je continue à venir à travers en F #, je dois avoir une fonction intérieure qui se récursif sur une certaine valeur - et je n'ai besoin de cette fonction qu'une seule fois, est-il possible d'appeler un lambda de l'intérieur de lui-même (un mot-clé magique ou quelque chose)? Je voudrais que le code pour ressembler à ceci:
let listToString2 (lst:list<'a>) = ;;' prettify fix
(fun
(lst:list<'a>) buffer -> match List.length lst with ;;' prettify fix
| 0 -> buffer
| _ -> ##RECURSE## (List.tl lst) (buffer + ((List.hd lst).ToString()))
) lst ""
Mais comme on pouvait s'y attendre, il n'y a aucun moyen de se référer à la fonction anonyme en lui-même, ce qui est nécessaire où je mets ## RECURSE ##