Разве бесконечные типы (или рекурсивные типы) невозможны в F #?

Я болтал сСадек Дроби в твиттере, когда вы узнаете, что F # не поддерживает бесконечные типы. Оказывается, в C # вы можете сделать что-то вроде этого:

delegate RecDelegate<T> RecDelegate<T>(T x);

Однако после некоторых экспериментов с обеими нашими частями мы определили, что то же самое в F # кажется невозможным как неявным, так и явным образом.

Explicit:

type 'a specialF = 'a->specialF<'a>

error FS0191: This type definition involves an immediate cyclic reference through an abbreviation, struct field or inheritance relation.

Implicit:

let rec specialF (x: 'a) = specialF

Type mismatch. Expecting a 'b but given a 'a -> 'b. The resulting type would be infinite when unifying ''b' and ''a -> 'b'.

Конечно, это намеренно простые образцы.

Мне было интересно, если я как-то ошибаюсь. Возможно, я пропустил какой-то тип необходимой аннотации?

Ответы на вопрос(3)

Ваш ответ на вопрос