组织我的相互递归类型

时间:2010-11-29 21:38:36

标签: f# types mutual-recursion

是否可以将相互递归类型([<Struct>])分布在不同的文件中?这些类型直接位于命名空间下。

我的解决方案是将它们放在一个大文件中并使用type ... and ... and ... etc构造。这是唯一的方法吗?

1 个答案:

答案 0 :(得分:17)

您可以使用一种称为解开递归结的技术,您可以将参数化为另一种结构。

所以这个:

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

变为:

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