Сделал grep -niIR 'List.hd' ~/devel/
Обнаружил аж одно упоминание. Да какое!
let hdtl l = (List.hd l, List.tl l)
И один вызов этой херни.
Прочитал и нихуя не понял, зачем я это сделал.
./lwt-2.4.3/src/core/lwt_util.ml:59: if r <> [] then wa (List.hd r);
./lwt-2.4.3/src/core/lwt_util.ml:63: if l <> [] then wa (List.hd l);
./lwt-2.4.3/_build/src/core/lwt_util.ml:59: if r <> [] then wa (List.hd r);
./lwt-2.4.3/_build/src/core/lwt_util.ml:63: if l <> [] then wa (List.hd l);
./lwt-2.4.3/tests/core/test_lwt_util.ml:49: let f = List.hd !r in
/extlib-1.5.3/refList.ml:45:let hd rl = try List.hd !rl with _ -> raise Empty_list
Еб твою мать.