F # использует структурное равенство для оператора =
, который почти всегда вам нужен:
let a = [1; 2; 3]
let b = [1; 2; 3]
printfn "%A" (a = b) // Prints "true"
Но в некоторых алгоритмах может быть важно спросить: "Являются ли эти две вещи одним и тем же объектом?" Это может помочь, например, определить циклы на графике. Итак, как я могу задать ссылочное равенство в F #? I.e., как написать функцию isSameObject
ниже?
let isSameObject x y = ???
let a = [1; 2; 3]
let b = [1; 2; 3]
let a' = a
printfn "%A" (isSameObject a b) // Prints "false"
printfn "%A" (isSameObject a a') // Prints "true"