0
votes

Y a-t-il un moyen idiomatique de faire une boucle de nouvelle tentative dans F #

J'ai un code qui procède aux éléments suivants: xxx

L'absence d'une fonction de retour dans F # rend ce code assez ballonné. Y a-t-il un moyen plus concis et idiomatique d'interrompre les boucles et de renvoyer un résultat en F #? Tout ce que j'ai trouvé jusqu'à présent est assez similaire à ce que je fais.

f#

0 commentaires

3 Réponses :


2
votes

Tout d'abord, vous ne définissez pas ce que vous entendez par "ballonné". Qu'est-ce que tu es après? Moins de variables? Moins de lignes de code? Quelque chose d'autre?

La manière habituelle des boucles d'écriture dans la programmation fonctionnelle est via Récursion: P>

let rec loop retries =
    let result = try something
    if result = success then
        Some result
    elif retires <= 0 then
        None
    else
        some delay
        loop (retries - 1)

loop 10


0 commentaires

1
votes

permet de dire que vous avez une fonction qui retourne true lorsqu'elle est passée 3 par. Vous pouvez casser la boucle à l'aide de SEQ.SKIPHILE. Il n'exécutera que 3 fois 3 fois pas 10. Enfin, cela reviendra (vrai) car il réussit. XXX PRE>

Si vous définissez P>

let f n = n= 11


0 commentaires

1
votes

idiomatiquement il ne devrait y avoir aucun état mutable (supplémentaire).

La route explicite consiste à le faire dans une fonction récursive, quelque chose comme; xxx

vous pourriez probablement faites-le avec un seq.unfold et un SEQ.LAST ... mais cela peut être plus convolué


0 commentaires