Помимо сокращений типов, есть две полезные вещи, которые нужно знать о типах F #. Прежде всего, есть два способа написания имен универсальных типов. Одним из способов является использование синтаксиса OCaml, а вторым - использование синтаксиса .NET:
- При использовании синтаксиса .NET вы пишете
array<'T>
или, например, OtherType<'T1, 'T2>
(для типов с более чем одним параметром универсального типа).
- В синтаксисе OCaml то же самое записывается как
'T array
или ('T1, 'T2) OtherType
Эти две нотации эквивалентны - когда вы объявляете значение, аннотированное с использованием синтаксиса .NET, вы можете присвоить его значению, аннотированному с использованием синтаксиса OCaml. 'T[]
- это специальные обозначения для массивов, но это объясняет, почему array<'T>
совпадает с 'T array
.
Во-вторых, F # использует немного неудачное именование для типов чисел с плавающей запятой. Вероятно, это связано с совместимостью с OCaml, но это может запутать программистов .NET:
- F # тип float соответствует
System.Double
в .NET (который называется double
в C #)
- F # тип float32 соответствует
System.Single
в .NET (который называется float
в C #)
Как указывает @kvb, double - это псевдоним другого типа для System.Double
типа.