2011-08-22 17 views

risposta

22

Il and è necessario per le definizioni di Grammar e Definition da compilare correttamente. Il tipo Grammar è elencato per primo ma dipende dal tipo Definition definito in seguito. Per compilare correttamente, deve essere collegato a and che indica al compilatore F # le definizioni di tipo dipendenti/correlate.

Non v'è alcun motivo per Range da dichiarare in modo tale e deve essere dichiarata con type

+16

Inoltre, 'Grammatica' potrebbe essere inserita dopo la dichiarazione di' Definizione' e quindi non ci sarebbe motivo di usare 'e' su nessuno di essi. – Samuel

13

E 'utilizzato per creare tipi di reciprocamente correlate. Di solito in F #, è necessario inoltrare dichiarare ogni tipo prima di usarlo, ma questo non è sempre possibile, ad esempio quando è necessario introdurre una dipendenza ciclica su due o più tipi.

Nel tuo esempio, se si è definito Definition con type piuttosto che and, non sarebbe in grado di compilare la definizione di Grammar, a meno che non si è cambiato l'ordine in cui sono definiti.

L'esempio di codice che hai pubblicato non è esattamente un buon esempio, perché la relazione reciproca non è necessaria in esso - è possibile modificare l'ordine. (A meno che non ci fossero altri tipi definiti più in basso che dipendevano da quanto sopra).