Fascinating design rationale for Rust's crate system: allow circular dependencies but only within a project:
miniblog.
Related Posts
Today I learnt that Emacs defines a ring structure using just a fixed size array, to give you the convenience of circular structures and dynamically sized arrays!
Creating a circular data structure should be impossible with immutability, right? Amazingly, laziness enables this:
Lispers aren't afraid of C macros, and that leads to remarkable loop constructs that handle circular lists: