La linea guida comune di uguaglianza/membri di confronto il design è quello di non implementare l'uguaglianza strutturale tipi di riferimento mutabili, ma dare un'occhiata a F # tipi di record con i campi mutabili:uguaglianza inferenza in F # record + con campi mutabili
type Value = { mutable value: int }
let mutableRecord = { value = 1 }
let xs = Map.ofList [ mutableRecord, "abc"
{ value = 2 }, "def" ]
let abc = Map.find { value=1 } xs
mutableRecord.value <- 3
let abc = Map.find { value=3 } xs // KeyNotFoundException!
Il numero Map
è ordinato internamente, ma i campi record mutable
mi consentono di modificare l'ordine mentre l'istanza del record è già all'interno della mappa e questo è molto brutto.
Penso che F # debba dedurre le modalità [<NoEquality>]
e [<NoComparison>]
per i tipi di record F # che dichiarano i campi mutabili, non è vero?