Can you elaborate on what kind of circular dependencies are you referring to and how would catamorphisms with `Either CycleDetected a` help to reduce those dependencies?
Security Underlying Security (Security)
Where that's the Security object, not the Security ID.
This works great for moeb, until the day that someone accidentally introduces a cycle. Instead you want a representation that looks like:
Security Either CycleDetected a
You can call traverse to make that `Either CycleDetected Security a`.
Is that making any sense at all?
You rapidly realize that X knows Y and Y knows X.