Note that opaque types do not have any special syntax. They are essentially types (not type aliases) whose constructor functions are not exposed from the module.
The formal, mathematical definition for a graph is just this: G = (V, E). That’s it! Really. I promise.
…e difference: instead of x and y, the parts of a graph…e difference: instead of x and y, the parts of a graph instead are: v, for vertices, and e, for its edges.