Используется для создания взаимосвязанных типов.Обычно в F # вам необходимо объявить каждый тип вперед, прежде чем использовать его, но это не всегда возможно, например, когда вам нужно ввести циклическую зависимость для двух или более типов.
В вашем примереесли вы определили Definition
с помощью type
вместо and
, вы не сможете скомпилировать определение Grammar
, если вы не изменили порядок, в котором они определены.
Пример кода, который вы разместили, не совсем хороший, потому что в этом нет необходимости во взаимных отношениях - вы можете изменить порядок.(Если не было еще нескольких типов, определенных ниже, которые зависели от вышеупомянутого).