Dipende tutto da come il parser dà la priorità a diverse opzioni sintattiche per evitare l'ambiguità.
+
è sia l'operatore di addizione binaria che l'operatore unario "positivo" . 5 + b
è quindi l'applicazione di aggiunta a due argomenti; ma +b
è l'operatore positivo applicato a qualche simbolo b
.
Così
let ab a b = a 5 + b
viene analizzato come:
let ab a b = (a 5) + b
con a
essendo funzione di un argomento intero restituendo un int in modo che possa essere aggiunto al b
; ma
let ab2 a b = a 5 +b
viene analizzato come:
let ab2 a b = a (5) (+b)
con a
essendo una funzione di due argomenti, senza la possibilità di dedurre il tipo ritorna.
Non ho a disposizione un elenco di operatori F #, quindi non posso controllare il nome corretto. Modifica: sembra che non ricordassi correttamente: Arithmetic Operators (F#) :-).
Nell'espressione '+ b',' + 'viene interpretato come un [operatore unario] (https://en.wikipedia.org/wiki/Unary_operation) (prendendo solo' b' come argomento). – Glorfindel