F# Circular 类型定义循环

F# Circular Type Definition Loop

我想要一个类型 A,它有一个 属性,它是类型 B 的一个实例。类型 B 有一个 属性 类型 A 的实例。问题是,F#按顺序读取源文件。所以如果我先定义类型 A,那么它就不会识别类型 B。如果我先定义类型 B,我就不能让它拥有 A 的实例。有没有办法解决这个问题,或者这只是糟糕的设计我呢?

如果它们在同一个文件中,您可以定义相互递归类型

type Chicken =
   | Eggs of Egg list
and Egg =
   | Chickens of Chicken list