.net - Use of the and keyword in F# in discriminated unions

ID : 274386

viewed : 22

Tags : .netf#functional-programmingdiscriminated-union.net





Top 3 Answer for .net - Use of the and keyword in F# in discriminated unions

vote vote

95

The and is needed for the definitions of Grammar and 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 type

vote vote

87

It's used to create mutually related types. Usually in F#, you need to forward declare each type before you use it - but this isn't always possible, for example when you need to introduce a cyclic dependency on two or more types.

In your example, if you defined Definition with type rather than and, you wouldn't be able to compile the definition of Grammar, unless you switched the order in which they're defined.

The code example you've posted isn't exactly a good one, because the mutual relation isn't necessary in it - you can change the order. (Unless there were some more types defined further down which depended on the above).

vote vote

71

Top 3 video Explaining .net - Use of the and keyword in F# in discriminated unions







Related QUESTION?