type waiter =
{ w_wait : unit Lwt.t;
w_waker: unit Lwt.u option;
mutable w_did_wait : bool }
と?に " unit"がある理由がわかりません。w_waitw_waker
Lwt のドキュメントによると、タイプ'a Lwt.tは「タイプ 'a. の結果を返すスレッドのタイプ」であるため、w_waitユニットを返す協調スレッドです (つまり、副作用のみを持ちます)。「スレッドウェイクナーの種類」も同様'a Lwt.u です。
Lwtのドキュメントであなたが理解していないことはわかりません。それは私にはかなり理解できるようです。