Syntax OCaml共享变量
我希望创建两个函数:第一个函数生成一个新的整数,第二个函数重置生成器Syntax OCaml共享变量,syntax,ocaml,Syntax,Ocaml,我希望创建两个函数:第一个函数生成一个新的整数,第二个函数重置生成器 let a = ref 0 in let f () = a := !a + 1 and g () = a := 0; ();; REPL在最后两个分号上显示“Error:Syntax Error”。第二个let后面还需要在中加一个(参见),例如 但也许你想要更像这样的东西: let new_counter () = let a = ref 0 in let f () = a := !a + 1;
let a = ref 0 in
let f () = a := !a + 1 and
g () = a := 0; ();;
REPL在最后两个分号上显示“Error:Syntax Error”。第二个
let
后面还需要在中加一个(参见),例如
但也许你想要更像这样的东西:
let new_counter () =
let a = ref 0 in
let f () = a := !a + 1; !a
and g () = a := 0
in (f, g);;
第二个let
后面还需要在中加一个(参见),例如
但也许你想要更像这样的东西:
let new_counter () =
let a = ref 0 in
let f () = a := !a + 1; !a
and g () = a := 0
in (f, g);;
我刚刚尝试了你的代码,但它没有在全局范围内声明f和g。我只想给多个函数一个共享引用,然后在全局范围内调用它们。这是怎么回事?您可能还需要一个函数来获取a
的值。还是应该在全球范围内?对不起!我忘了f是unit->int。代码是let f()=a:=!a+1!a
它可以工作!谢谢你,我认为这是解决我的问题的好方法。我刚刚尝试了你的代码,但它没有在全局范围内声明f和g。我只想给多个函数一个共享引用,然后在全局范围内调用它们。这是怎么回事?您可能还需要一个函数来获取a
的值。还是应该在全球范围内?对不起!我忘了f是unit->int。代码是let f()=a:=!a+1!a
它可以工作!谢谢你,我认为这是解决我问题的好办法