我在使用时遇到了一些错误Lwt_main.run()
。基本上我有两个类型的无限循环,unit -> 'a Lwt.t = <fun>
当我启动两个循环时,我收到错误。我在一个循环是编写器循环而另一个是读取器循环的上下文中使用这些。基本上,我必须更频繁地使用编写器更新一些数据,而不是使用阅读器。我收到的错误可以用下面的代码说明。
let rec p1 () =
Lwt_io.print "1\n"
>>= fun () -> Lwt_unix.sleep 1.0
>>= p1
;;
val p1 : unit -> 'a Lwt.t = <fun>
let rec p5 () =
Lwt_io.print "5\n"
>>= fun () -> Lwt_unix.sleep 5.0
>>= p5
;;
val p5 : unit -> 'a Lwt.t = <fun>
Lwt_main.run(p1(); p5());;
Characters 13-17:
Warning 10: this expression should have type unit.
Characters 13-17:
Warning 10: this expression should have type unit.
我可以按如下方式运行 Lwt_main.run 语句而不会出错,但似乎此解决方案只是用通配符掩盖警告,而不是修复警告。
let _ = Lwt_main.run(p1())
let _ = Lwt_main.run(p5())
在这种情况下正确使用什么,Lwt_main.run()
以便我可以修复错误,而不仅仅是用通配符掩盖它们?