Sml 在ML中使用ref函数
考虑到ref运算符,我很难理解其应用和以下说明的含义: 1. 在这个定义中,我定义了什么Sml 在ML中使用ref函数,sml,ml,Sml,Ml,考虑到ref运算符,我很难理解其应用和以下说明的含义: 1. 在这个定义中,我定义了什么 - val ref x=ref 9; val x = 9 : int 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 val ref x=ref 9将x定义为9
- val ref x=ref 9;
val x = 9 : int
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
val ref x=ref 9
将x
定义为9
——就像您编写了val x=9
。这是因为ref
是一个构造函数,所以它的模式匹配值ref 9
与模式ref x
,后者将x
绑定到9。当然,这样写,而不是仅仅写valx=9
,没有什么意义
当您写入
ref x:=ref 12
时,您将创建一个新的ref
(类型为int-ref-ref
)引用x
。然后立即将新的ref
更改为引用ref 12
,而不是x
。由于您创建的新ref
从未存储在您可能访问的任何地方,因此这将不会产生明显的效果。@newacct,@sepp2k我看到这是几年前的内容,但我发现讨论很有用,并希望从新泽西v110.79的标准ML[构建:2017年8月8日星期二16:57:33]
:
- val ref x = ref 9;
val x = 9 : int
有趣的是,
ref
可以在SML的模式匹配中解包。“ref
是一个构造函数”似乎没有文档记录anywhere@newacct老实说,我不完全确定这是标准行为还是特定于实现(而且我手头没有标准可供检查)。