Problema con dependencias cíclicas entre tipos y funciones de diferentes archivos en F #

Mi proyecto actual usa AST con 40 tipos diferentes (uniones descriminadas) y varios tipos de este AST tienen dependencia cíclica. Los tipos no son tan grandes, por lo tanto, los puse en un archivo y apliquétype ... and ... construcción para tipos mutuamente dependientes.

Ahora, estoy agregando funciones para hacer algunos cálculos debajo de cada elemento en AST. Dado que hay muchas funciones con varias líneas de código en ellas, para que el código fuente sea más limpio de leer, he separado estas funciones en diferentes archivos.

Está bien en el caso de que la dependencia cíclica esté ausente, también funciona cuando las funciones dependientes están en el mismo archivo; en este caso, puedo usarlet rec function1 ... and function2 ... construcción

Pero no funcionará en mi caso.

También pensé incorrectamente, que los archivos de firmas pueden ayudarme con esto, pero su comportamiento difiere de C ++: se usan para definir el modo de acceso a funciones / tipos (interno / público), también se pueden agregar encabezados de comentarios de funciones / tipos aquí. .

a única solución posible que veo es mover todas las funciones a un archivo y usarlet rec ... and ... and ... and ... and ... construcción

Es posible que alguien tenga ideas diferente

Gracias por adelantado

Respuestas a la pregunta(1)

Su respuesta a la pregunta