F # Type Аннотация для списков - PullRequest
9 голосов
/ 12 января 2011

В F # что такое аннотация типа для типизированного списка (например, список int)? С помощью простой функции я могу делать аннотации следующим образом:

let square (x: int) = ...

Я аннотировал x как тип int. Но что, если я хочу сделать аннотацию типа для списка int? Например, допустим, у меня есть функция max, которая ожидает список - как бы я сделал для нее аннотацию типа?

let max (цифры: ??) = ...

1 Ответ

23 голосов
/ 12 января 2011

Есть два варианта:

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

Первая версия использует синтаксис, унаследованный от OCaml (и часто используется для примитивных типов F #, таких как списки). Вторая версия использует синтаксис .NET (и чаще используется для типов .NET или при написании объектно-ориентированного кода на F #). Однако оба они означают одно и то же.

В любом случае форма аннотации типа всегда (<something> : <type>), где <something> - это либо шаблон (как в списке параметров), либо выражение. Это означает, что int list и list<int> являются просто именами типов. F # Interactive печатает тип, если вы вводите какое-либо значение, так что вы можете использовать это, чтобы узнать больше о том, как пишутся имена типов:

> [1;2;3]
val it : int list = [ 1; 2; 3 ]
...