Open JeffreyBenjaminBrown opened 7 years ago
There's no way to constrain in FGL which edges are legal.
It may be possible to implement a new FGL type using dependent-maps, but I'm hesitant to add any extra dependencies as it's part of the Haskell Platform.
Is there a some canonical way to enforce graph invariants in FGL?
I have been using FGL to implement a generalization of graphs that allows for arbitrary arity and nesting of relationships. It looks like this:
Words and Templates emit no edges. Each Relationship emits an edge labeled "TemplateRole" to a Template of arity k, and k more edges, labeled "Member i" for i in [1,k]. Thus the model permits lots of invalid state.
I don't know whether it's relevant, but I just learned about the dependent map library, which implements a map that allows keys to specify the types of values associated with them.