2010-11-29 28 views
5

¿Es posible tener tipos recursivos mutuos ([<Struct>]) distribuidos en diferentes archivos? Los tipos están directamente debajo de un espacio de nombres.Organizar mis tipos recursivos mutuos

Mi solución es ponerlos en un archivo grande y usar la construcción type ... and ... and ... etc. ¿Es la única manera?

Respuesta

13

Puede utilizar una técnica llamada desvinculación del nudo recursivo donde parametriza uno sobre el otro.

Así que esto:

type a = B of b 
and b = A of a 

se convierte en:

type 'b a = B of 'b 
type b = A of b a 
+0

Gracias por la respuesta. ¿Este tipo de técnica se usa a menudo? Siento que las pautas de diseño de F # recomiendan poner todo en un gran archivo, ¿verdad? – Stringer

+0

Ciertamente lo uso a menudo y recomiendo a nuestros clientes que lo usen a menudo, pero, sí, parece que no se aprecia. –

+0

'desvincular el nudo recursivo' es muy útil cuando intentas memorizar funciones. Se ha descrito en el * Cuando necesitamos sustitución * de http://typeocaml.com/2015/01/20/mutable/ –

Cuestiones relacionadas