Strongly_conn...mponents.Make(3)

✨ NAME ✨

okay so bestie, this page is Strongly_connected_components.Make(3) from the OCaml library manual πŸ’–. The NAME section is literally:

Strongly_connected_components.Make - no description

No cap, that’s the whole description 😭. Moving on 🫢.


🌸 Module 🌸

The module situation is giving nested-module energy. The signature is:

Module Make
        : (Id : Identifiable.S) -> sig end

πŸ’– Documentation πŸ’–

πŸ¦‹ Module Make πŸ¦‹

Here’s the fancy signature again, because it’s iconic:

Module Make
        : (Id : Identifiable.S) -> sig end

πŸŽ€ Parameters πŸŽ€

  • "Id" β€” the parameter name, in quotes, exactly like that.
  • Identifiable.S β€” the module type it has to satisfy.

And inside, you get this module:

module Id : Identifiable.S

🧚 directed_graph type 🧚

The type is exactly:

type directed_graph = Id.Set.t Id.Map.t

If (a -> set) belongs to the map, it means there are edges from a to every element of set. It is assumed β€” like, the structure really expects it β€” that no edge points to a vertex not represented in the map. πŸ‘‘

πŸ“ component type πŸ“

Two constructors, periodt:

type component =
 | Has_loop of Id.t list
 | No_loop of Id.t

πŸ’… vals πŸ’…

These are the two values, and their signatures are the whole vibe in the original β€” no extra prose attached:

val connected_components_sorted_from_roots_to_leaf : directed_graph ->
       component array
val component_graph : directed_graph -> (component * int list) array

That’s the whole page, bestie β€” slay πŸ’…. Source/version: OCamldoc. Date: 2026-06-22. Byeee 🫢

πŸ“¦ where this page comes from