可以使用Lwt.return作为递归函数中的最终调用吗?Lwt和递归函数
我有一个编译好但功能不正常的函数,它看起来像下面的函数f
。请假定在这个例子中,作为g
提供的任何函数都没有问题,我基本上只是想知道是否可以使用以下形式的函数或者是否有更好/更简单(并且符合Lwt)做法如下:
let rec f (x : string list) (g : string -> unit Lwt.t) =
match List.length x with
| 0 -> Lwt.return()
| _ -> g (List.hd x) >>= fun() -> f (List.tl x) g
;;
val f : string list -> (string -> unit Lwt.t) -> unit Lwt.t = <fun>
我很确定我做错了。但是我使用的实际功能比这个例子复杂得多,所以我很难调试它。
我会补充一点,看看该模块的实施可能是一个好主意,只是为了学习如何处理这种情况。 –