2011-01-12 3 views
9

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

Пусть квадрат (х: Int) = ...

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

пусть макс (количество: ??) = ...

ответ

22

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

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 ] 
+0

Огромное спасибо и спасибо за книгу вы написали (с Джоном Скит) тоже; Я работаю над этим в течение нескольких месяцев. – t3rse

Смежные вопросы