在ML中使用ref函数

abc*_*abc 3 ml sml

考虑到ref运算符,我无法理解它的应用程序以及遵循指令的意义:

1.

在这个定义中,我定义了什么?

 - val ref x=ref 9;

 val x = 9 : int
Run Code Online (Sandbox Code Playgroud)

2.

在这里我用ref x:= ref 12做什么?

 - val x= ref 8;

 val x = ref 8 : int ref

 - ref x := ref 12; 

 val it = () : unit

 - x;

 val it = ref 8 : int ref
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 6

val ref x = ref 9定义x9- 就像你写的一样val x = 9.这是因为ref是一个构造函数,所以它的模式匹配的价值ref 9与模式ref x,结合x到9当然写像这样,而不是仅仅写val x = 9让人很没有意义.

在编写时ref x := ref 12,您创建一个引用的新ref(类型int ref ref)x.然后你立即改变那个新ref的引用ref 12而不是x.由于ref您创建的新内容永远不会存储在您可能访问的任何位置,因此没有可观察到的效果.