Qu'est ce qu'un remplacement fonctionnel pour if-then?

J'ai appris F# et de la programmation fonctionnelle et d'essayer de faire les choses de la façon fonctionnelle. Cependant, quand il s'agit de la réécriture du code, j'avais déjà écrit en C#, je me retrouve bloqué à un simple if-then (ceux qui ne font qu'une chose, de ne pas renvoyer une valeur). Je sais que vous pouvez en sortir en F#:

if expr then do ()

Cependant, je pensais que c'était un impératif approche de codage? Peut-être que je n'ai pas assez appris sur la programmation fonctionnelle, mais il ne semble pas fonctionnel pour moi. J'ai pensé que l'approche fonctionnelle a été de composer des fonctions et des expressions, pas simplement d'exécuter des instructions l'une après l'autre, qui est ce que si-alors semble encourager.

Donc, suis-je raté quelque chose et si alors est parfaitement bien dans le monde fonctionnelle? Si non, quel est l'équivalent fonctionnel d'une telle déclaration? Comment pourrais-je prendre un " si-alors et tournez-il fonctionnel?

Edit: j'ai peut-ai posé la mauvaise question (désolé, encore assez nouveau à la programmation fonctionnelle): prenons un exemple concret qui m'a même demander ceci:

if not <| System.String.IsNullOrWhiteSpace(data) then do
    let byteData = System.Text.Encoding.Unicode.GetBytes(data)
    req.ContentLength <- int64 byteData.Length
    let postStream : System.IO.Stream = req.GetRequestStream()
    postStream.Write(byteData, 0, byteData.Length)
    postStream.Flush()
    postStream.Dispose()

Le corps de cette si-alors ne retourne rien, mais je ne sais pas comment je pourrais le rendre plus fonctionnel (si c'est encore possible). Je ne sais pas la bonne technique pour minimiser code impératif. Étant donné F#'s de la nature, il est assez facile de simplement transporter mon C# directement, mais je vais avoir des difficultés tournant fonctionnelle. Chaque fois que j'atteins un tel si l'instruction en C#, et je suis en train de le transporter à F#, je vous découragez pas que je ne peux pas penser à un moyen de rendre le code plus fonctionnelle.

  • Le code dans votre édition est impératif de nature, vous êtes le chaînage de plusieurs actions, pas le calcul d'une valeur. F# on ne peut pas vous aider à le rendre plus fonctionnel, mais il fournit des outils pour isoler les effets secondaires et de les rendre plus visibles.
InformationsquelleAutor Bob | 2012-02-15