F# Type Аннотация для списков
В F# что такое аннотация типа для типизированного списка (например, список int)? С помощью простой функции я могу делать аннотации следующим образом:
let square (x: int) =...
Я аннотировал х как тип int. Но что, если я хочу сделать аннотацию типа для списка int? Например, допустим, у меня есть функция max, которая ожидает список - как бы я сделал для нее аннотацию типа?
пусть max(число:??) = ...
1 ответ
Есть два варианта:
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 ]