and is needed for the definitions of
Definition to compile correctly. The
Grammar type is listed first but depends on the type
Definition which is defined later. In order to compile properly it must be linked with
and which tells the F# compiler the type definitions are dependent / related.
There is no reason for
Range to be declared in such a way and should be declared with