Question

Laquelle de ces deux alternatives utilisez-vous le plus souvent et laquelle est la plus "idiomatique"?

  1. f arg (obj.DoStuff ())
  2. f arg < | obj.DoStuff ()
Était-ce utile?

La solution

Dans l'ensemble, je ne sais pas si l'un ou l'autre est plus idiomatique.

Personnellement, la seule fois où j'utilise < | est avec "augmentation":

raise <| new FooException("blah")

En dehors de cela, j'utilise toujours des parens. Notez que comme la plupart des codes F # utilisent des fonctions curryed, cela n’implique généralement pas de "extra". parens:

f arg (g x y)

C'est quand vous entrez dans les fonctions et les constructeurs non curry et que tout le reste commence à devenir moins joli:

f arg (g(x,y))

Nous allons probablement au moins envisager de modifier les règles du langage F # afin que les applications à priorité élevée se lient encore plus étroitement; en ce moment

f g()

analyse comme

f g ()

mais beaucoup de gens aimeraient qu'il soit analysé comme

f (g())

(le cas de motivation dans la question initiale). Si vous avez une opinion bien arrêtée, laissez un commentaire sur cette réponse.

Autres conseils

Etant donné que l'inférence de type fonctionne de gauche à droite, l'utilisation de | > permet également à F # d'inférer le type de l'argument de la fonction.

Par exemple,

[1; 2; 3] |> (fun x -> x.Length*2)

fonctionne très bien, mais

(fun x -> x.Length*2) [1; 2; 3]

se plaint de "recherche sur un objet de type indéterminé".

J'utilise () beaucoup plus souvent, mais c'est une préférence, je suis presque sûr que < | est plus idomatique, mais j’utilise () par habitude.

Autant que possible, je préfère de loin | > car il se lit de gauche à droite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top