Class F#循环类型定义循环

Class F#循环类型定义循环,class,types,f#,definition,Class,Types,F#,Definition,我想要一个类型a,它的属性是类型B的实例。类型B的属性是类型a的实例。问题是,F#按顺序读取源文件。因此,如果我先定义类型A,那么它就不会识别类型B。如果我先定义类型B,我就不能让它有一个A的实例。有没有办法解决这个问题,或者这只是我糟糕的设计?如果它们在同一个文件中,你可以定义一个相互递归的类型,就像这样 type Chicken = | Eggs of Egg list and Egg = | Chickens of Chicken list type a()。。。和b()——

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

如果它们在同一个文件中,你可以定义一个相互递归的类型,就像这样

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

type a()。。。和b()
——几乎可以肯定,这是一个重复的东西,不完全是对你问题的回答,但本文对这个问题给出了一个很好的概述: