Functional programming let定义系列

Functional programming let定义系列,functional-programming,ocaml,let,Functional Programming,Ocaml,Let,我是OCaml的初学者,我对let系列有一个问题,比如: let x = myFun y in let z = myFun x in ... 但是,在let之间,我使用Hashtbl.iter和其他返回单元的函数。如果我这样做: let x = myFun y in Hashtbl.iter (...) ... let z = myFun x in ... 编译器引发了一个错误。但是,如果我这样做: let x = myFun y in let h = Hashtbl.iter (...)

我是OCaml的初学者,我对let系列有一个问题,比如:

let x = myFun y in
let z = myFun x in
...
但是,在let之间,我使用Hashtbl.iter和其他返回单元的函数。如果我这样做:

let x = myFun y in
Hashtbl.iter (...) ...
let z = myFun x in
...
编译器引发了一个错误。但是,如果我这样做:

let x = myFun y in
let h = Hashtbl.iter (...) ...
let z = myFun x in
...

编译器不会引发任何错误,只是显示从未使用过“h”的警告。没有任何问题的最好方法是什么?谢谢。

您必须使用
要分隔表达式,请执行以下操作:

e1 ; e2
这将在
e1
中执行副作用并丢弃结果,然后计算'e2'

因此,在你的情况下:

let x = myFun y in
Hashtbl.iter (...) ... ;
let z = myFun x in
...

请注意,您可以编写

let x = ... in
  let _ = Hashtbl.iter in ...