я болтал с Садек Drobi на твиттере, когда воспитываться, что F # не кажется, поддерживают Бесконечные типы. Оказывается, что в С# вы можете сделать что-то в этом направлении:
delegate RecDelegate<T> RecDelegate<T>(T x);
Однако после некоторых экспериментов на обеих наших частях мы определили, что одно и то же в F # кажется невозможным как неявным, так и явно.
Явное:
type 'a specialF = 'a->specialF<'a>
ошибка FS0191: определение этого типа включает немедленную циклическую ссылку через аббревиатуру, поле структуры или отношения наследования.
Неявное:
let rec specialF (x: 'a) = specialF
Несоответствие типов. Ожидание "b", но с учетом "a → " b. Полученный тип было бы бесконечно при объединении '' b ' и '' a → 'b'.
Конечно, это преднамеренно простые образцы.
Мне было интересно, если я ошибаюсь. Возможно, я пропустил какую-то необходимую аннотацию?