2011-01-12 17 views
9

En F # ¿cuál es el tipo de anotación para una lista de tipo (por ejemplo, lista de int)? Con una función simple que pueda hacer anotaciones de la siguiente manera:F # Tipo Anotación para las listas

Let cuadrado (x: int) = ...

He anotada x como un tipo int. Pero, ¿qué sucede si quiero hacer una anotación de tipo para una lista int? Por ejemplo, supongamos que tengo una función máxima que espera una lista: ¿cómo podría hacer una anotación de tipo para ella?

Let max (números: ??) = ...

Respuesta

22

Hay dos opciones:

let max (numbers:int list) = ... 
let max (numbers:list<int>) = ... 

La primera versión utiliza una sintaxis que se hereda de OCaml (y se utiliza con frecuencia para la primitiva F # tipos tales como listas). La segunda versión usa la sintaxis .NET (y se usa con más frecuencia para tipos .NET o cuando se escribe código orientado a objetos en F #). Sin embargo, ambos significan exactamente lo mismo.

En cualquier caso, la forma de anotación de tipo es siempre (<something> : <type>) donde <something> es un patrón (como en la lista de parámetros) o una expresión. Esto significa que int list y list<int> son solo 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 ] 
+0

Muchas gracias y gracias por el libro que escribió (con John Skeet) también; He estado trabajando en ello durante algunos meses. – t3rse