dune/src/top_closure.mli

26 lines
485 B
OCaml

open Stdune
module type Keys = sig
type t
type elt
val empty : t
val add : t -> elt -> t
val mem : t -> elt -> bool
end
module type S = sig
type key
(** Returns [Error cycle] in case the graph is not a DAG *)
val top_closure
: key:('a -> key)
-> deps:('a -> 'a list)
-> 'a list
-> ('a list, 'a list) result
end
module Int : S with type key := int
module String : S with type key := string
module Make(Keys : Keys) : S with type key := Keys.elt