Tipo unit (F#)
El tipo unit es un tipo que indica la ausencia de un valor concreto; el tipo unit tiene solo un valor, que actúa como marcador de posición cuando no existe o no se necesita ningún otro valor.
// The value of the unit type.
()
Comentarios
La evaluación de toda expresión de F# devuelve un valor. Para las expresiones que no generan ningún valor de interés, se utiliza el valor de tipo unit. El tipo unit es similar al tipo void de los lenguajes C# y C++.
El tipo unit tiene un solo valor, indicado por el token ().
El valor de tipo unit suele usarse al programar en F# para marcar la posición donde la sintaxis del lenguaje requiere un valor, cuando no se necesita o no se desea colocar ningún valor. Un ejemplo podría ser el valor devuelto por una función printf. Dado que las acciones importantes de la operación printf se producen en la función, esta no tiene que devolver ningún valor. Por consiguiente, el valor devuelto es de tipo unit.
Algunas construcciones esperan un valor de tipo unit. Por ejemplo, se espera que un enlace do o cualquier código en el nivel superior de un módulo se evalúe como un valor de tipo unit. El compilador muestra una advertencia cuando un enlace do o código del nivel superior de un módulo genera un resultado distinto del valor de tipo unit que no se utiliza, tal y como se muestra en el ejemplo siguiente.
let function1 x y = x + y
// The next line results in a compiler warning.
function1 10 20
// Changing the code to one of the following eliminates the warning.
// Use this when you do want the return value.
let result = function1 10 20
// Use this if you are only calling the function for its side effects,
// and do not want the return value.
function1 10 20 |> ignore
Esta advertencia es una característica de la programación funcional; no aparece en los demás lenguajes de programación de .NET. En un programa puramente funcional, donde las funciones no tienen ningún efecto secundario, el valor devuelto final es el único resultado de una llamada de función. Por consiguiente, cuando se omite el resultado, se trata de un posible error de programación. Aunque F# no es un lenguaje de programación puramente funcional, se recomienda seguir un estilo de programación funcional siempre que sea posible.