可以使用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>
我很確定我做錯了。但是我使用的實際功能比這個例子複雜得多,所以我很難調試它。
我會補充一點,看看該模塊的實施可能是一個好主意,只是爲了學習如何處理這種情況。 –