You can define mutually dependent types using and
:
type Employee =
| Engineer of Person
| Manager of Manager // manager has list of reports
| Executive of Executive
and Manager = { Name: Person; Reports: Employee list }
and Executive = { Name: Person; Reports: Employee list; Assistant: Employee }