Wspólna równości/członkowie porównania konstrukcja wytyczną jest nie wdrożenia równości strukturalnej na modyfikowalnych typów referencyjnych, ale przyjrzeć się F # typów płytowych z polami modyfikowalnych:Równość wnioskowanie w F + rekordy # z polami modyfikowalnych
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!
Map
jest sortowany wewnętrznie, ale pola rekordów mutable
pozwalają mi zmienić kolejność, podczas gdy instancja rekordu jest już na mapie i jest to bardzo złe.
Myślę, że F # powinien wyprowadzać [<NoEquality>]
i [<NoComparison>]
tryby dla typów rekordów F #, które deklarują pola zmienne, czyż nie?