¿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?