Per rispondere a questa domanda, supponiamo che il costo dell'ambiguità nella mente di un programmatore sia molto più costoso di alcune sequenze di tasti in più.
Detto questo, perché dovrei permettere ai miei compagni di squadra di fare a meno di non che annotano i loro parametri di funzione? Prendi il seguente codice come esempio di ciò che potrebbe essere una parte di codice molto più complessa:
let foo x y = x + y
Ora, un rapido esame del tooltip ti mostrerà che F # ha determinato che intendevi per xey essere int. Se è quello che intendevi, allora va tutto bene. Ma I non so se è quello che intendevi. E se avessi creato questo codice per concatenare due stringhe insieme? O se pensi che probabilmente hai intenzione di aggiungere i doppi? O se non volessi dover passare il mouse sopra ogni singolo parametro di funzione per determinarne il tipo?
Ora prendi questo come esempio:
let foo x y = "result: " + x + y
F # ora presume che tu abbia probabilmente intenzione di concatenare le stringhe, quindi xey sono definite come stringhe. Tuttavia, come il povero schmuck che sta mantenendo il tuo codice, potrei guardarlo e chiedermi se forse avevi intenzione di aggiungere x e y (ints) insieme e quindi aggiungere il risultato a una stringa per scopi di interfaccia utente.
Certamente per esempi così semplici si potrebbe lasciarlo andare, ma perché non applicare una politica di annotazione esplicita del tipo?
let foo (x:string) (y:string) = "result: " + x + y
Che danno c'è nell'essere inequivocabili? Certo, un programmatore potrebbe scegliere i tipi sbagliati per quello che stanno cercando di fare, ma almeno so che l'avevano previsto, che non era solo una svista.
Questa è una domanda seria ... Sono ancora molto nuovo su F # e sto aprendo la strada alla mia azienda. Gli standard che adotterò saranno probabilmente la base per tutta la futura codifica F #, incorporata nell'infinita copia-incolla che sono sicuro permeerà la cultura per gli anni a venire.
Quindi ... c'è qualcosa di speciale nell'inferenza di tipo di F # che la rende una caratteristica preziosa su cui aggrapparsi, annotando solo quando necessario? Oppure gli esperti F # -er hanno l'abitudine di annotare i loro parametri per applicazioni non banali?