result
не модификатор, а тип, требующий двух переменных типа.Его определение немного упрощено:
type ('a, 'e) result =
| Ok of 'a
| Error of 'e
Таким образом, переменная первого типа задает тип аргумента для конструктора Ok
, а вторая - тип аргумента дляконструктор Error
.
Вам может показаться задом наперед, что аргументы предшествуют типу, к которому они применяются, но выполнение этого таким образом имеет некоторые преимущества.Во-первых, int list
читается лучше, чем list int
, а во-вторых, вы можете написать int list list
вместо list (list int)
, как если бы вы решили следовать синтаксису обычного приложения функции.
Вы, вероятно, такжеобратите внимание, что существует разница между синтаксисом для типов кортежей и значений кортежей .result
принимает значение кортежа , содержащее два типа , первый тип в данном случае - кортеж.
Надеюсь, это прояснит его для вас.