Os tipos infinitos (também conhecidos como tipos recursivos) não são possíveis em F #?

Eu estava conversando comSadek Drobi no twitter quando foi levantado que o F # não parecia suportar Tipos Infinitos. Acontece que em C # você pode fazer algo ao longo destas linhas:

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

No entanto, após algumas experiências em ambas as partes, determinamos que o mesmo em F # parece impossível tanto implícito quanto explicitamente.

Explícito:

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

erro FS0191: Essa definição de tipo envolve uma referência cíclica imediata por meio de uma abreviação, um campo struct ou uma relação de herança.

Implícito:

let rec specialF (x: 'a) = specialF

Incompatibilidade de tipos. Esperando um b mas dado um 'a ->' b. O tipo resultante seria infinito ao unificar '' b 'e' 'a ->' b '.

Claro, estas são amostras intencionalmente simples.

Eu queria saber se estou de alguma forma enganado. Talvez eu tenha perdido algum tipo de anotação necessária?

questionAnswers(3)

yourAnswerToTheQuestion