Вопрос

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

Пусть Square (x: int) = ...

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

Пусть Макс (Числа: ??) = ...

Это было полезно?

Решение

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

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

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

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

> [1;2;3]
val it : int list = [ 1; 2; 3 ]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top