Observable Sharing is where the sharing implicit in a set of data-structures can be observed.
IO-based reification, as implemented by data-reify, provided the ability to turn recursive structures into explicit graphs. Many (implicitly or explicitly) recursive data structure can be given this ability, via a type class instance. It is a key piece of technology used in many reification and synthesis libraries.
Publications and Libraries
A. Gill, “Type-safe observable sharing in Haskell,” in Proceedings of the Second ACM SIGPLAN Haskell Symposium, ser. Haskell ’09. New York, NY, USA: ACM, Sep 2009, pp. 117–128.