¿No son posibles los tipos infinitos (también conocidos como tipos recursivos) en F #?

Estaba charlando conSadek Drobi en Twitter, cuando se mencionó, F # no parecía admitir los Tipos Infinitos. Resulta que en C # puedes hacer algo en este sentido:

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

Sin embargo, después de algunos experimentos con nuestras partes, determinamos que lo mismo en F # parece imposible, tanto implícito como explícito.

Explícito:

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

error FS0191: esta definición de tipo implica una referencia cíclica inmediata a través de una abreviatura, campo de estructura o relación de herencia.

Implícito:

let rec specialF (x: 'a) = specialF

Tipo de desajuste. Esperando un 'b pero dado un' a -> 'b. El tipo resultante sería infinito al unificar '' b 'y' 'a ->' b '.

Por supuesto, estas son muestras intencionalmente simples.

Me preguntaba si de alguna manera estoy equivocado. Tal vez me perdí algún tipo de anotación necesaria?

Respuestas a la pregunta(3)

Su respuesta a la pregunta