将lwt.t代码放入用于mirage os的Ocaml中的无限循环中



我从mirageOS github repo中修改了以下代码块:

open Lwt.Infix
module Main (KV: Mirage_kv.RO) = struct
let start kv =
let read_from_file kv =
KV.get kv (Mirage_kv.Key.v "secret") >|= function
| Error e ->
Logs.warn (fun f -> f "Could not compare the secret against a known constant: %a"
KV.pp_error e)
| Ok stored_secret ->
Logs.info (fun f -> f "Data -> %a" Format.pp_print_string stored_secret);

in
read_from_file kv
end

该代码从一个名为";秘密";并输出一次我想在睡眠的情况下不断地读取文件并从中输出

用例是这样的:当这个程序运行时,我会用其他进程更新secret文件,所以我希望看到输出中的更改。

我试过什么

我试着把最后一句话放在的while循环中

in 
while true do 
read_from_file kv
done

但它给出了错误此表达式的类型单位为Lwt.t,但由于表达式位于while循环的主体中,因此应为类型单位的表达式

我只知道lwt是一个线程库,但我不是ocaml开发人员,也不想成为其中之一(我对MirageOS感兴趣(,所以我找不到编写它的函数语法。

您需要将循环写成一个函数。例如

let rec loop () =
read_from_file kv >>= fun () ->
(* wait here? *)
loop ()
in
loop ()

相关内容

  • 没有找到相关文章

最新更新