Pointers 将一个引用设置为SML中的另一个引用

Pointers 将一个引用设置为SML中的另一个引用,pointers,reference,functional-programming,sml,Pointers,Reference,Functional Programming,Sml,是否可以将一个引用更新为SML中的另一个引用?这可能是一个非常愚蠢的问题,但我似乎无法理解它。例如,考虑以下两个参考文献: val x1 = ref(NONE); val x2 = ref(NONE); (*update so that x1 = x2; returns true*) 如何将x1更新为等于x2。我不是说把x2指向x1的内容放进去,我想知道我是否可以将它们设置为相等,这样当我测试相等(eq-x1=x2)时,结果是真的 我想让它们指向一个新的内存位置 val z = NONE x

是否可以将一个引用更新为SML中的另一个引用?这可能是一个非常愚蠢的问题,但我似乎无法理解它。例如,考虑以下两个参考文献:

val x1 = ref(NONE);
val x2 = ref(NONE);

(*update so that x1 = x2; returns true*)
如何将x1更新为等于x2。我不是说把x2指向x1的内容放进去,我想知道我是否可以将它们设置为相等,这样当我测试相等(eq-x1=x2)时,结果是真的

我想让它们指向一个新的内存位置

val z = NONE
x1 := z
x2 := z

这不管用。我想我应该再复习一下SML中的参考资料。感谢您的帮助。

我所知道的两个参考值相等的唯一方法是它们是否相同:

val x1 = ref NONE
val x2 = x1

将导致
x1=x2
为真。

我所知道的两个参考值相等的唯一方法是如果它们相同:

val x1 = ref NONE
val x2 = x1

将导致
x1=x2
为真。

我所知道的两个参考值相等的唯一方法是如果它们相同:

val x1 = ref NONE
val x2 = x1

将导致
x1=x2
为真。

我所知道的两个参考值相等的唯一方法是如果它们相同:

val x1 = ref NONE
val x2 = x1

将导致
x1=x2
为真。

在ML中没有变量赋值。因此,以两个不同值开头的两个变量永远不会相等
ref NONE
计算为指向新的可变引用对象的指针;因此,对
ref
的两个调用将计算指向不同对象的指针

这是一个参考,这不是真的相关。与任何其他类型相同:

val x1 = 2;
val x2 = 3;
(*update so that x1 = x2; returns true*)

x1=x2
永远不会为真。(至少对于
x1
x2
来说不是这样;如果你定义了一个新的
x1
,那就另当别论了。)

ML中没有变量赋值。因此,以两个不同值开始的两个变量永远不会相等
ref NONE
计算为指向新的可变引用对象的指针;因此,对
ref
的两个调用将计算指向不同对象的指针

这是一个参考,这不是真的相关。与任何其他类型相同:

val x1 = 2;
val x2 = 3;
(*update so that x1 = x2; returns true*)

x1=x2
永远不会为真。(至少对于
x1
x2
来说不是这样;如果你定义了一个新的
x1
,那就另当别论了。)

ML中没有变量赋值。因此,以两个不同值开始的两个变量永远不会相等
ref NONE
计算为指向新的可变引用对象的指针;因此,对
ref
的两个调用将计算指向不同对象的指针

这是一个参考,这不是真的相关。与任何其他类型相同:

val x1 = 2;
val x2 = 3;
(*update so that x1 = x2; returns true*)

x1=x2
永远不会为真。(至少对于
x1
x2
来说不是这样;如果你定义了一个新的
x1
,那就另当别论了。)

ML中没有变量赋值。因此,以两个不同值开始的两个变量永远不会相等
ref NONE
计算为指向新的可变引用对象的指针;因此,对
ref
的两个调用将计算指向不同对象的指针

这是一个参考,这不是真的相关。与任何其他类型相同:

val x1 = 2;
val x2 = 3;
(*update so that x1 = x2; returns true*)

x1=x2
永远不会为真。(至少不能使用
x1
x2
;如果你定义了一个新的
x1
,那就另当别论了。)

你为什么要这样做?你为什么要这样做的可能重复?你为什么要这样做的可能重复?你为什么要这样做的可能重复?你为什么要这样做的可能重复