F #: un valor recursivo que puede hacer referencia a sí mismo

Tengo un registro:

type node = {
               content : string;
               parent : node option;
               branch : string option;
               children : seq<node> option;
            }

Lo que quiero instanciar de esta manera:

let rec treeHead = {
                       content = "Value"
                       parent = None;
                       branch = None;
                       children = tree (Some(treeHead)) rows;
                   };

Dónde

let rec tree (parent:node option) (rows:seq<CsvRow>) :seq<node> option

Es una función recursiva que obtiene los hijos de un nodo (para construir un árbol). Entonces, como puede ver, el objeto treeHead necesita llamarse a sí mismo a través de la función de árbol.

Quiero hacerlo de esta manera para evitar usar treeHead como un valor mutable y cambiar su propiedad secundaria después.

Mi pregunta es que el treeHead está generando un error y una advertencia. El error dice:

El valor 'treeHead' se evaluará como parte de su propia definición.

Y la advertencia dice:

Esta y otras referencias recursivas a los objetos que se están definiendo se comprobarán para determinar la solidez de la inicialización en tiempo de ejecución mediante el uso de una referencia retrasada. Esto se debe a que está definiendo uno o más objetos recursivos, en lugar de funciones recursivas. Esta advertencia se puede suprimir mediante el uso de '#nowarn "40"' o '--nowarn: 40'.

Primero, ¿estoy haciendo esto de la manera correcta (quiero decir, sin considerar la opción mutable)? ¿Y cómo debo corregir esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta