A sequence of calls donated by the key type κ.
A CallStack ending in a cycle.
A transformer that equips a monad with a CallStack to detect cycles.
Add key to the monad's CallStack before invoking act.
If adding key produces a cycle, the cyclic call stack is thrown.