在SML中传递对函数的引用

时间:2019-01-02 00:35:32

标签: sml

我想在foo中传递对函数sml的引用并更改其值。考虑以下情形:

val x = ref 5; 
foo 3 x; 
(* now x will be 3 *) 

sml中有可能吗?我知道sml没有变量,所以我不确定它是否可能。我想通过这种方式创建测试,例如:

val test1 = (foo (seq 2) = 2); 
val test2 = (foo it = 2);

它将不起作用,因为it将包含test1的输出(其布尔值)。我想传递一个引用x并每次更改它。

val x = ref 0;
val test1 = (foo (seq 2) x = 2); 
val test2 = (foo (getnext(!x)) x = 3); 
val test3 = (foo (getnext(!x)) x = 4); 
val test4 = (foo (getnext(!x)) x = 5);

getnext将获得下一个值,而foo会将其插入x中,除了返回值以使其可以检查是否相等外。

1 个答案:

答案 0 :(得分:1)

怎么了

fun foo v r = (r := v; v)