关于 f#:组织我的相互递归类型

 2022-01-07 

Organise my mutual recursive types

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

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


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

所以:

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

变成:

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