Как указал Карстен в комментарии, код работает нормально, если вы введете его в чистом F # Interactive.Поскольку компилятор жалуется, что Option<'T>
не соответствует 'T option
, я думаю, что вы случайно написали некоторый код, который переопределил Some
и None
перед использованием функции unfold
.Возможно, вы написали что-то вроде этого (и оценили это в F # Interactive):
type Option<'T> =
| None
| Some of 'T
Это скрывает стандартные определения Some
и None
, которые являются конструкторами типа 'T option
, определенного в стандарте.Библиотека F # (ожидаемая функцией unfold
).
Вы можете сбросить интерактивный сеанс F #, щелкнув правой кнопкой мыши в окне и выбрав «Сбросить сеанс».Это удаляет предыдущие объявления, и код должен работать нормально.