2010-12-13 5 views
5

Una domanda semplice ... È buona norma definire una funzione che accetta più di 1 parametro attraverso le tuple?Definendo i parametri nelle funzioni F #, è meglio usare le tuple?

Mi spiego meglio: Ho una funzione:

let myfunc par1 par2 = ...;; 

È bene a così?

let myfunc (par1, par2) = ...;; 

Quando dico "è bello", sto dicendo: è una buona pratica? è buono farlo SEMPRE come pratica comune per passare i parametri ad una funzione ??

Grazie

risposta

5

normale F # stile è quello di definire funzioni al curry, vale a dire non tupled secondo il vostro primo esempio.

Currying ti permette di fare questo: ("applicazione parziale")

let myfunc par1 par2 = ... 
let myfuncHello = myfunc "Hello" 
myfuncHello "World" // same as: myfunc "Hello" "World" 

Tuttavia, se si espone il codice per NET lingue diverse F #, bastone con tupling, dal momento che è difficile chiamare funzioni al curry eccezione da F #.

Edit: dal nuovo sito F # Snippets: http://fssnip.net/I

+0

Ah ok ... ora posso vedere dove è utile notazione tupled ... ah scusate una domanda: così la prima notazione è chiamato accattivarsi? (Non riesco ancora ad accettare la tua risposta perché devo aspettare 5 minuti :)). – Andry

+1

Proprio così: nella prima notazione, hai definito una funzione al curry; myfunc è al curry. Quando lo chiami come ho fatto nella mia risposta, l'hai parzialmente applicato. Questi termini sono comunemente confusi: http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application –

+0

Sì, l'ho già letto in precedenza, è un curriculum molto interessante ... Grazie mille. – Andry

Problemi correlati