F # больше не допускает псевдонимы типов, которые добавляют параметры универсального типа к типу без объявления нового типа.Если вы хотите определить универсальный тип, который охватывает какой-то другой тип, вы должны использовать какой-то конструктор.Например, вы можете использовать однозначное распознаваемое объединение:
type 'a Cucomment = CC of string
К сожалению, это означает, что вам придется изменить весь код, который использует тип, чтобы развернуть значение, используя сопоставление с образцом или добавив Value
член типа.
Единственный случай, когда допустимы псевдонимы универсального типа, - это когда вы объявляете версию типа с единицами измерения, которая требует специального атрибута.Тем не менее, это, вероятно, не будет работать для вас (потому что модули ведут себя по-разному):
[<MeasureAnnotatedAbbreviation>]
type 'a Cucomment = string
Если это в некотором коде, сгенерированном fsyacc , то это ошибка в fsyaccэто должно быть исправлено (я думаю, это было довольно недавнее изменение).В этом случае сообщите об этом fsbugs
в microsoft
dot com
.