使用中にエラーが発生しましたLwt_main.run()
。基本的に、2 つのタイプの無限ループがunit -> 'a Lwt.t = <fun>
あり、両方のループを開始するとエラーが発生します。1 つのループがライター ループで、もう 1 つのループがリーダー ループであるというコンテキストでこれらを使用しています。基本的に、リーダーで使用するよりも頻繁にライターでデータを更新する必要があります。私が受け取ったエラーは、以下のコードで説明できます。
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()
ワイルドカード文字でエラーをマスクする代わりにエラーを修正できるように、このコンテキストでの適切な使用法は何ですか?