2011-04-28 7 views
0

let passFive f = (f 5)Support en F # (laissez passFive f = (f 5))

let passFive f = f 5

Quelle est la différence entre eux?

Je trouve qu'ils sont tous les deux comme ci-dessous:

val passFive : (int -> 'a) -> 'a

+0

Qu'est-ce qui vous fait penser qu'il y a une différence? – Gabe

+1

Une bonne question non? Étant donné une langue inconnue, et deux extraits de code différents que les deux compilent, il est raisonnable de demander s'il y a une différence. – DuckMaestro

+0

@Gabe: Une rencontre préalable avec Lisp? ;-) – petebu

Répondre

2

Ils sont à la fois les mêmes et entre parenthèses (parenthèses) ici sont utilisés comme partout ailleurs où vous voulez regrouper les opérandes et d'augmenter leur priorité.

printfn "%A" myfunc 5 

donnera une erreur.

printfn "%A" (myfunc 5) 

est comment il est supposé être écrit.

+0

Comme partout ailleurs ** en F # ** ... – Benjol

+0

@Benjol: Comme n'importe où ailleurs dans 90% des langues. – delnan

+0

@delnan, ok, point pris. Ce à quoi je pensais était le fait que dans les parenthèses F # sont * seulement * utilisés pour la précédence, alors qu'ailleurs, ils sont utilisés pour "empaqueter" les arguments pour les méthodes/fonctions. Cela fait parfois trébucher les gens. – Benjol