Per rispondere alla seconda metà della tua domanda, i tipi generici in F # possono essere specificate utilizzando la sintassi in stile O'Caml dove il parametro generico precede il tipo (ad es 'a list
, int array
, ecc .), o lo stile .NET con parentesi angolari (es. list<'a>
, array<int>
, ecc.), quindi le due definizioni sono in effetti sostanzialmente equivalenti (eccetto che la tua versione scritta non è sintatticamente valida perché lazy
è una parola chiave). Per i tipi generici multiparametro, lo stile O'Caml è deprecato e genera un avviso (ad esempio, let (m:(int,string) Map) = Map.empty
deve essere riscritto come let (m:Map<int,string>) = Map.empty
).
Infatti consente di utilizzare qualsiasi stringa come un identificatore, quindi sei appassionato di identificatori con punti interrogativi (ALA Ruby) si può dire:? \t let '' è buono '' = false Benchè Non sono convinto che questo sia davvero un buon modo per scrivere codice. – Robert