красивые грабли: OCaml о прекрасном.
написал чудесный функтор
module type Holder =
sig
type t
end
module Comparable(H:Holder) =
struct
type t = H.t
let compare = compare
end
прекрасно применяется, между прочим, к целым,
строкам, декартовым произведениям, вариантам ...
и всё бы было ничего, но функция
lim f eq start =
let next = f start in
if (eq start next) then next
else lim f eq next
(которая весьма полезна для набивки множеств,
получения связных компонент графов и
всего такого прочего) у меня зациклилась
(на Map[Comparable[Set[...]]] и этот самый
compare = 0)
( мораль проста ... )