Listas F # Tipo de anotación para
Pregunta
En F # ¿cuál es el tipo de anotación para una lista mecanografiada (e..g lista de int)? Con una función simple que pueda hacer anotaciones de la siguiente manera:
dejar cuadrados (x: int) = ...
He anotado x como un tipo int. Pero lo que si quiero hacer una anotación de tipo int para una lista? Por ejemplo, digamos que tengo una función max que espera una lista - ¿cómo podría hacer una anotación de tipo para ello?
dejar que Max (números: ??) = ...
Solución
Hay dos opciones:
let max (numbers:int list) = ...
let max (numbers:list<int>) = ...
La primera sintaxis usa la versión que se hereda de OCaml (y se utiliza con frecuencia para primitivos tipos # F tales como listas). La segunda versión usos .NET de sintaxis (y se utiliza con más frecuencia para este tipo de NET o al escribir código orientado a objetos en F #). Sin embargo, ambos significan exactamente lo mismo.
En cualquier caso, la forma de tipo de anotación es siempre (<something> : <type>)
donde <something>
es o bien un patrón (como en la lista de parámetros) o una expresión. Esto significa que int list
y list<int>
son sólo nombres de tipos. F # Interactivo imprime el tipo si se introduce algún valor, por lo que puede usar esto para aprender más acerca de cómo se escriben los nombres de tipos:
> [1;2;3]
val it : int list = [ 1; 2; 3 ]