En F #, todas las funciones toman un solo parámetro. Ahora esto puede ser un poco confuso al principio, porque puede tener una función que parece tomar más de un parámetro, pero en realidad está pasando un único parámetro que es una tupla.
Aquí está un ejemplo sencillo de constructores que parece como que toman más de 1 parámetro:
let foo = DirectoryInfo "boo" //passing 1 argument
let foo2 = DirectoryInfo ("boo") //passing 1 argument that is a tuple
let foo3 = StringBuilder ("blah", 100) //passing 1 argument again
let foo4 = StringBuilder "blah" 100 //does not compile
Para obtener más información sobre este estilo, echa un vistazo a Tuples on MSDN.
Ahora, también hay otro método ligeramente diferente para hacer que parezca que una función requiere más de 1 argumento. Esto se llama currying, que verá más a menudo cuando se trata solo de código F #. Aquí hay un quick example de esto.
gracias por la respuesta, soy consciente de la tupla entre paréntesis, pero vi que en algunos casos las clases .net deben tener sus parámetros entre paréntesis, aunque es un parámetro único, y ahora creo que es cuando el objeto es IDisposable y necesitamos usar el nuevo operador. entonces, algo como nuevo SomeDisposable (foo) necesita paréntesis – Alex
No estoy seguro de que sea exacto. Por ejemplo, con 'FileSystemWatcher' esto compila bien: ' let watcher = new FileSystemWatcher "blah" ' – wsanville
Vale la pena señalar que muchos ejemplos de código F # siempre usan paréntesis al invocar un constructor de clase. Si bien esto es necesario para los constructores de clase multiparamétrica, hacerlo en singular hace que las llamadas de constructor de clase se vean como la forma típica de llamadas discriminatorias de constructor de unión, que son comunes en la mayoría de los lenguajes de ML-family. – pblasucci